firebase实验:功能:shell不重新加载更新代码

时间:2018-02-08 14:58:29

标签: typescript firebase firebase-cli

我正在关注此帖{@ 3}}

我为Cloud功能设置了一个Typescript项目。我的代码在src/index.ts,已编译的代码@ lib/index.js

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

TS to JS编译正在进行中。但是shell没有按照上面的文章中的说明获取更新的代码。我要退出shell(Ctrl + C * 3),然后再次运行以获取最新代码。

我的Firebase工具版本:3.17.4

更新1:

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

  

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

     

'成功调用函数。'

     

firebase> info:触发用户功能,开始执行

     

info:BYE 6

     

info:交易成功,未定义

     

info:执行时间为2852毫秒,用户功能成功完成

我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

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

原始答案

我在Linux上遇到过同样的问题。我可以在JavaScript中获得热门重新加载的hellow world示例,但不是TypeScript示例。似乎firebase服务只监视它运行的目录中的index.js(如果未在firebase.json中配置,则会在functions/目录中)。

为了让我的项目重新加载TypeScript(我假设更复杂的JavaScript布局),我不得不使用Webpack输出单个文件functions/dist/index.js并配置Firebase以在functions/dist中查找我的函数代码。然后,这会对firebase functions:shellfirebase serve进行热重新加载。

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

更新了firebase.json

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

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