Jac*_*all 4 firebase typescript firebase-tools google-cloud-functions angularfire2
我在 Angular/Fire 项目中使用 Firebase 模拟器套件,包括云函数模拟器。firebase 工具 9.23.1。打字稿版本 4.5.4。package.json主要属性是开发"main": "lib/index.js",环境是MacOS 12.1。
我跑去tsc -w观察函数项目的 src 文件夹并转换任何更改。然后我使用启动模拟器firebase emulators:start。模拟器套件启动成功,云函数使用启动时函数中包含的代码运行。
当我将对代码的更改保存到 /src 中的 .ts 文件中时,主文件夹中的 .js 文件会立即反映这些更改;tsc -w似乎正在按预期进行观察和转译。
但是当我之后调用模拟函数时,它们仍然运行保存和转换之前的旧代码。Cloud firestore的文档说:
注意:模拟器会自动重新加载您在活动会话期间所做的代码更改。如果您的代码需要转译(TypeScript、React),请确保在运行模拟器之前执行此操作。您可以使用 tsc -w 等命令在监视模式下运行转译器,以便在保存时自动转译和重新加载代码。
我不知道我在这里缺少什么。无论我使用脚本启动观察程序和模拟器还是手动启动,我都会得到相同的行为。我也尝试过使用firebase serve --only functionsandfirebase serve:shell没有运气。我需要使用一个标志firebase emulators:start来说服模拟器观察更改吗?
tsconfig.json 文件是一个 Typescript 配置文件。您可以使用该文件来设置编译器,建立代码格式化规则,最重要的是,告诉它有关项目中的 TS 文件的信息。你已经明白了。如果您想密切关注文件,请在包脚本中使用“watch”标志:tsc --watch。
tsc-watch 的开发是为了让 TypeScript 开发变得更容易。与 nodemon 类似,但对于 TypeScript,此命令通常用于重新启动节点服务器。
脚本示例:
"scripts": {
"serve": "npm run build -- --watch | firebase emulators:start --only functions",
...
}`
Run Code Online (Sandbox Code Playgroud)
这是一个示例 tsconfig.json 文件:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": false, "noImplicitAny": false, "removeComments": true, "noLib": false }, "include": [ "**/*" ], "exclude": [ "node_modules", "**/*.spec.ts" ]}
Run Code Online (Sandbox Code Playgroud)
另一个可能并不完美的选项是停止并重新运行模拟器。
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |