2

我正在关注这篇文章@ https://firebase.googleblog.com/2018/01/streamline-typescript-development-cloud-functions.html

我为云功能设置了一个 Typescript 项目。我有我的代码src/index.ts,转译代码 @ lib/index.js

  • 我用命令启动shellfirebase experimental:functions:shell --debug
  • ./node_modules/.bin/tsc --watch在其他终端

TS 到 JS 的编译正在发生。但是 shell 没有像上面文章中解释的那样获取更新的代码。我要退出 shell (Ctrl+C * 3),然后再次运行它以获取最新代码。

我的 Firebase 工具版本:3.17.4

更新 1:

我在 Ubuntu Linux 17.04 中运行。日志显示没有错误。但我得到了我的控制台日志,如下所示:

firebase > newPledgeListener({foo: "bar"})

'成功调用函数。'

firebase > info: 触发用户函数,开始执行

信息:再见 6

info:交易成功,未定义

信息:执行耗时 2852 毫秒,用户功能成功完成

我可能做错了什么?

4

1 回答 1

0

更新:一种解决方法是从源代码(或 linuxbrew)安装 Watchman。


原始答案

我在 Linux 上遇到了同样的问题。我可以让 JavaScript 中的地狱世界示例进行热重载,但不是 TypeScript 示例。似乎 firebase serve 只监视它正在运行的目录中的 index.js(如果未配置,firebase.json则在functions/目录中)。

为了让我的项目重新加载 TypeScript(并且我假设更复杂的 JavaScript 布局),我必须使用 Webpack 输出单个文件functions/dist/index.js并配置 Firebase 以在functions/dist. 这使得热重载对firebase functions:shell和都有效firebase serve

我目前的工作流程是webpack --watch在一个终端上运行,firebase serve --only functions另一个在另一个终端上运行。

更新了 firebase.json

{    
  "functions": {
    "predeploy": "npm --prefix functions run build",
    "source": "functions/dist"
  }
}

这种方法的一个问题是firebase deploy源条目失败,因为它需要该目录中的 package.json。

于 2018-05-02T07:12:14.977 回答