"firebase serve" 在 firebase 函数中不是 运行 最新的变化
"firebase serve" in firebase functions is not running the latest changes
我正在玩 Firebase 函数。使用命令 firebase deploy --only functions
部署到 firebase 服务器时工作正常。但是,当然,我想在部署到服务器之前先在本地测试我的功能。我看到 运行 firebase serve 是 "deployed" 本地函数没有我在 indext.ts 中所做的最新更改 - 运行 最后构建的版本,在 index.js.
我的问题是,如何手动构建我的 firebase 函数项目以使用最新更改在本地测试它们?
firebase serve
应该在本地部署之前自动构建项目吗?对我来说,这听起来像是一个错误。
我认为您不能在初始化项目中在 Javascript 和 Typescript 之间切换。 Typescript 的设置与 Javascript 有点不同。您需要将 Javascript 项目迁移到 Typescript。
要将您的项目从 JS 迁移到 TS,请遵循以下 firebase 函数文档:
Migrating an existing JavaScript Cloud Functions project
打字稿项目设置:
如果您想在 运行 宁 firebase serve
或 firebase functions:shell
时重新加载对 TypeScript 的更改,您所要做的就是使用创建的 npm 脚本再次构建您的项目在您初始化项目时为您提供(参见 package.json):
cd functions
npm run build
这会将您的 TypeScript 转换为 JavaScript,对 JavaScript 的更改将由模拟器自动获取。
此外,如果您是更高级的 TypeScript 用户,您可以 运行 tsc --watch
在磁盘上的源文件更改时自动将 TS 编译为 JS。您可以阅读更多相关信息 in this blog。
firebase serve
好像不是运行npm build
。但是,如果您查看 functions/package.json
,您会发现那里已经有一个执行 npm run build && firebase serve --only functions
的 serve
脚本。所以如果你这样做:
cd functions
npm run serve
您无需执行两个单独的命令即可构建和提供服务。
转到函数文件夹,打开 package.json
并添加新密钥:"hotReload": "tsc --watch"
接下来,运行 npm run hotReload
在相同的函数文件夹中并保持终端打开。每当 *.ts
文件发生任何更改时,这将更新 *.js
。请记住,来自 *.js
文件而不是 *.ts
文件的云函数 运行。因此,*.ts 文件需要先编译为 *.js
。
接下来,打开新终端,转到主项目文件夹和 运行 firebase serve
(并行 运行 hosting+functions)或 firebase serve --only functions
如果您正在寻找热重装,我只是像下面那样做:
"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,对你的开发速度有帮助
第一次使用 npm serve 命令时只需使用此命令
firebase emulators:start
我正在玩 Firebase 函数。使用命令 firebase deploy --only functions
部署到 firebase 服务器时工作正常。但是,当然,我想在部署到服务器之前先在本地测试我的功能。我看到 运行 firebase serve 是 "deployed" 本地函数没有我在 indext.ts 中所做的最新更改 - 运行 最后构建的版本,在 index.js.
我的问题是,如何手动构建我的 firebase 函数项目以使用最新更改在本地测试它们?
firebase serve
应该在本地部署之前自动构建项目吗?对我来说,这听起来像是一个错误。
我认为您不能在初始化项目中在 Javascript 和 Typescript 之间切换。 Typescript 的设置与 Javascript 有点不同。您需要将 Javascript 项目迁移到 Typescript。
要将您的项目从 JS 迁移到 TS,请遵循以下 firebase 函数文档:
Migrating an existing JavaScript Cloud Functions project
打字稿项目设置:
如果您想在 运行 宁 firebase serve
或 firebase functions:shell
时重新加载对 TypeScript 的更改,您所要做的就是使用创建的 npm 脚本再次构建您的项目在您初始化项目时为您提供(参见 package.json):
cd functions
npm run build
这会将您的 TypeScript 转换为 JavaScript,对 JavaScript 的更改将由模拟器自动获取。
此外,如果您是更高级的 TypeScript 用户,您可以 运行 tsc --watch
在磁盘上的源文件更改时自动将 TS 编译为 JS。您可以阅读更多相关信息 in this blog。
firebase serve
好像不是运行npm build
。但是,如果您查看 functions/package.json
,您会发现那里已经有一个执行 npm run build && firebase serve --only functions
的 serve
脚本。所以如果你这样做:
cd functions
npm run serve
您无需执行两个单独的命令即可构建和提供服务。
转到函数文件夹,打开 package.json
并添加新密钥:"hotReload": "tsc --watch"
接下来,运行 npm run hotReload
在相同的函数文件夹中并保持终端打开。每当 *.ts
文件发生任何更改时,这将更新 *.js
。请记住,来自 *.js
文件而不是 *.ts
文件的云函数 运行。因此,*.ts 文件需要先编译为 *.js
。
接下来,打开新终端,转到主项目文件夹和 运行 firebase serve
(并行 运行 hosting+functions)或 firebase serve --only functions
如果您正在寻找热重装,我只是像下面那样做:
"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,对你的开发速度有帮助
第一次使用 npm serve 命令时只需使用此命令
firebase emulators:start