服务 Firebase 函数不会在 Windows 上热重新加载

Posted

技术标签:

【中文标题】服务 Firebase 函数不会在 Windows 上热重新加载【英文标题】:Serving Firebase Functions doesn't hot reload on Windows 【发布时间】:2019-04-16 06:29:57 【问题描述】:

使用 firebase serve 命令在本地提供 Firebase 功能应该启用热重载,但这似乎不适用于 Windows,即使安装了 watchman。除了在每次代码更改后运行 npm build 之外,还有更好的解决方案吗?

【问题讨论】:

如果 CLI 无法按您预期的方式运行,请提交错误报告。 firebase.google.com/support/contact/bugs-features 确实,issue 被重新打开 【参考方案1】:

要使用 typescript 在 firebase 函数上启用 热重载,您可以将这 2 个命令添加到您的 package.json 文件中

"build:watch": "tsc -w"
"serve:watch": "npm run build:watch | firebase emulators:start --only functions",

如果您还想使用路径别名功能您将需要安装 2 个额外的开发包才能使其工作

npm install --save-dev tsc-alias concurrently

tsc-alias 用于在 tsc 编译器的 typescript 编译后将别名路径替换为相对路径,因为单独的编译器无法解析别名路径

concurrently 用于同时运行多个命令

安装 2 个包后,您需要添加这 2 个脚本到您的 package.json 文件

"build:watch": "concurrently --kill-others \"tsc -w\" \"tsc-alias -w\"",
"serve:watch": "npm run build:watch | firebase emulators:start --only functions",

使用热重载开始开发然后就像只在终端中运行一样简单

npm run serve:watch

请注意: 我正在使用这个版本的包

"firebase-admin": "^10.0.1",
"firebase-functions": "^3.14.1",
"tsc-alias": "^1.5.0",
"typescript": "^4.5.5",
"concurrently": "^7.0.0",

旧版本或新版本可能会在编译代码时引入一些问题

【讨论】:

【参考方案2】:

我混合了 2 个答案:

"scripts": 
   "serve": "npm run build -- --watch | firebase emulators:start --only functions",
   ...

【讨论】:

【参考方案3】:

我按照以下方式进行操作(除了 galki 的回答):

firebase serve --only functions

在另一个终端选项卡中我只是使用

npm run build -- --watch 

从函数目录中。这样你就有了某种更快的开发周期。

【讨论】:

【参考方案4】:

它从当前时间点开始工作(firebase-tools 8.0.0)。

两者

firebase serve --only functions

 firebase emulators:start --only functions

工作,但仍需要每次手动运行npm run build

【讨论】:

【参考方案5】:

尝试以下 npm 脚本

"serve": "./node_modules/.bin/tsc --watch | firebase serve --only functions"

【讨论】:

以上是关于服务 Firebase 函数不会在 Windows 上热重新加载的主要内容,如果未能解决你的问题,请参考以下文章

Firebase pubsub 函数在模拟器中工作,但在生产中不会立即返回

Firebase Job Dispatcher 不会触发服务类

Node.js -Firebase 服务帐户私钥不会解析

如果超时或无法访问服务器,Fire base 不会调用 onCancelled

Flutter:FireBase 抛出的 PlatformException 不会被捕获

如何在 React Native 中的 firebase 服务函数成功后运行回调函数