Firebase 云功能本地代码更改未反映在模拟器中
Posted
技术标签:
【中文标题】Firebase 云功能本地代码更改未反映在模拟器中【英文标题】:Firebase cloud function local code changes are not reflected in emulators 【发布时间】:2021-02-26 22:30:56 【问题描述】:我正在尝试使用 Firebase 云功能为我的应用开发 API。 关注this 站点,使用firebase 模拟器套件进行本地开发和测试。
问题:更改未反映在本地模拟函数中。
步骤:
index.js:
exports.test = functions.https.onRequest(async (request, response) =>
response.status(200).send("First");
);
成功部署test
方法。
firebase deploy --only functions:test
在 Postman 中发出以下 GET 请求。
https://us-central1-<project-name>.cloudfunctions.net/test
结果:第一 状态:200 OK
启动模拟器:
firebase emulators:start --only functions
在 Postman 中发出以下 GET 请求。
http://localhost:5001/<project-name>/us-central1/indexTest
结果:第一 状态:200 OK 与实际部署的函数相同。
功能代码改为:
exports.test = functions.https.onRequest(async (request, response) =>
response.status(200).send("Second");
);
在本地主机中点击模拟函数时获得与以前相同的结果。未反映更改。
另外,尝试停止模拟器并重新启动它。没有运气。
【问题讨论】:
明确地说,您是否希望模拟器在您更改代码后动态重新加载代码?你保存文件了吗?如果您认为模拟器无法正常工作,您应该在 GitHub 上提交错误。 github.com/firebase/firebase-tools @DougStevenson,我已经保存了文件。动态重新加载代码更改,重新启动模拟器后加载代码更改一切都很好。在将代码部署到生产环境之前,它不会以任何方式加载更改,这使得本地模拟器毫无意义。 @DougStevenson,我已按照建议提交了一个错误:github.com/firebase/firebase-tools/issues/2823。 【参考方案1】:按照 DougStevenson 的建议,我在 firebase-tools 存储库中提出了一个问题。 在 Sam Stern 的支持下,问题得以解决。
在这里为遇到相同问题的其他人发布解决方案。
解决方案:
-
每次更改 ts 文件后,运行“npm run build”再次编译代码。
如果您想在每次更改后自动编译,请将
package.json
中的 "build": "tsc"
更改为 "build": "tsc -w"
。
【讨论】:
以上是关于Firebase 云功能本地代码更改未反映在模拟器中的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Pub Sub Emulator 未收到消息
firebase 项目所有者更改后未反映在 Flutter Web 部署上的更改
Firebase 服务错误:端口 5000 未打开。无法启动功能模拟器