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 未打开。无法启动功能模拟器

CORS 阻止访问资源:如何在 Firebase 云功能中修复?

React 源代码更改未反映在浏览器 DOM 中