1

我正在尝试设置我的开发环境。我在 Windows 10 机器上使用 Angular 5 TypeScript、VisualStudio IDE。我正在使用 Firebase 托管、Firestore 和 Firebase 功能。我正在 TypeScript (index.ts) 文件的“函数”文件夹中编写函数。按照说明在本地测试 Firebase 功能时(https://firebase.google.com/docs/functions/local-emulator)。如链接中所述,我可以通过“firebase serve”和 Functions Shell 在本地服务器上本地运行函数。但是,当我对 index.ts 进行更改时,再次 ping 时该函数不会更新。仅当我执行完整的“firebase 部署功能”命令时才会更新。这违背了拥有本地函数模拟器的目的。这个想法是避免每次更改某些内容时都必须部署该函数。也许,有 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"
  }
}
4

1 回答 1

3

TypeScript 具有将代码转换为 JavaScript (ES6) 所需的转换阶段,Cloud Functions 可以理解该阶段。您必须使转译阶段发生,以便模拟器接受更改。

使用 Firebase CLI 为新的 TypeScript 项目创建的 package.json,您npm run build无需部署即可运行转译。或者,您可以使用tsc --watch一个进程自动将更改转换为您的 TypeScript。

听起来您的 package.json 可能很旧,并且不包含用于处理 TypeScript 的最新 npm 脚本。如果您没有npm run build可用的 Firebase CLI,我建议您使用最新版本的 Firebase CLI 重新创建它。

另外,我已经写了一篇关于这个的详细博客——你可以在这里阅读

于 2018-05-06T19:31:30.183 回答