Почему не будет обновлять функции эмулятора Angular Firebase Cloud Functions без полного развертывания? - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь настроить свою среду разработки. Я использую Angular 5 TypeScript, VisualStudio IDE на компьютере с Windows 10. Я использую Firebase Hosting, Firestore и Firebase Функции. Я пишу функции в папке «functions» в файле TypeScript (index.ts). Следуя инструкциям по тестированию функций Firebase Local (https://firebase.google.com/docs/functions/local-emulator).), я могу получить функции, выполняемые локально как на локальном сервере через «firebase serve», так и через оболочку функций, как описано в ссылке. Однако, когда Я делаю изменения в index.ts, функция не обновляется при повторном пинге. Она обновляется только тогда, когда я выполняю полную команду «firebase deploy functions». Это противоречит цели иметь локальный эмулятор функций. Идея состоит в том, чтобы избежать для развертывания функции каждый раз, когда вы что-то меняете. Может быть, что-то с firebase.json? Я скопировал его ниже вместе с выводом 'ng version'.

Angular CLI: 1.6.8
Node: 6.11.5
OS: win32 x64
Angular: 5.2.4
... cdk, common, compiler, compiler-cli, core, forms, http
... language-service, material, platform-browser
... platform-browser-dynamic, router

@angular/animations: 5.2.5
@angular/cli: 1.6.8
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.8
@schematics/angular: 0.1.17
typescript: 2.5.3
webpack: 3.10.0


// firebase.json
{
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ],
    "source": "functions"
  },
  "hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  },
  "database": {
    "rules": "database.rules.json"
  }
}

1 Ответ

0 голосов
/ 06 мая 2018

У TypeScript есть фаза переноса, необходимая для получения кода в JavaScript (ES6), что может быть понято облачными функциями. Вам нужно будет выполнить эту фазу переноса, чтобы эмулятор воспринял изменения.

Используя package.json, созданный интерфейсом командной строки Firebase для новых проектов TypeScript, вы можете запустить npm run build для переноса без развертывания. Или вы можете использовать tsc --watch, чтобы процесс автоматически переносил изменения в ваш TypeScript.

Похоже, ваш package.json может быть очень старым и не содержит новейших сценариев npm для работы с TypeScript. Я предлагаю воссоздать его с последней версией Firebase CLI, если у вас нет npm run build.

Кроме того, я написал подробный блог об этом - вы можете прочитать его здесь .

...