firebase功能中的“ firebase服务”未运行最新更改

时间:2018-07-19 07:15:13

标签: node.js typescript firebase google-cloud-functions firebase-cli

我正在使用Firebase函数。使用命令firebase deploy --only functions部署到Firebase服务器时,工作正常。但是,我当然想在部署到服务器之前在本地测试我的功能。我看到运行firebase服务的是,在本地“部署”的功能没有我在indext.ts中所做的最新更改-正在运行上次构建的版本,即在index.js中。

我的问题是,如何手动构建Firebase函数项目以使用最新更改在本地对其进行测试? firebase serve是否应该在本地部署项目之前自动构建项目?对我来说,这听起来像是个错误。

5 个答案:

答案 0 :(得分:6)

如果要在运行firebase servefirebase functions:shell时将更改重新加载到TypeScript中,您要做的就是使用初始化项目时为您创建的npm脚本再次构建项目。 (请参阅package.json):

cd functions
npm run build

这会将您的TypeScript转换为JavaScript,并且仿真器会自动提取对JavaScript的更改。

此外,如果您是TypeScript的高级用户,则可以在源文件在磁盘上更改时运行tsc --watch自动将TS编译为JS。您可以了解有关in this blog的更多信息。

答案 1 :(得分:3)

firebase serve似乎没有运行npm build。但是,如果您查看functions/package.json的内部,可以看到那里已经有一个执行serve的{​​{1}}脚本。因此,如果您这样做:

npm run build && firebase serve --only functions

您可以构建和使用,而不必执行两个单独的命令。

答案 2 :(得分:2)

如果您正在寻找热装,我就按照以下方式进行:

"start:emulators": "firebase emulators:start --only functions",
"ts:watch": "tsc --watch",
"dev": "concurrently --kill-others \"npm run start:emulators\" \"npm run ts:watch\"",

它将同时运行firebase和ts watch,这将帮助您提高开发速度

答案 3 :(得分:1)

我认为您不能在初始化的项目中在Javascript和Typescript之间切换。 Typescript的设置与Javascript有点不同。您将需要将Javascript项目迁移到Typescript。

要将您的项目从JS迁移到TS,请遵循以下firebase-functions文档:

Migrating an existing JavaScript Cloud Functions project

打字稿项目设置:

Typescript project setup

答案 4 :(得分:0)

这是怎么做的:
 转到功能文件夹,打开package.json并添加新密钥:"hotReload": "tsc --watch"

下一步,在相同的功能文件夹中运行npm run hotReload,并使终端保持打开状态。每当对* .ts文件进行任何更改时,这都会更新* .js。请记住,云功能是从* .js文件而不是* .ts文件运行的。因此,*。ts文件需要首先编译为* .js。

接下来,打开新终端,转到主项目文件夹,然后运行firebase serve(以并行运行托管功能)或firebase serve --only functions