Firebase 云函数本地代码更改未反映在模拟器中

Firebase cloud function local code changes are not reflected in emulators

我正在尝试使用 Firebase 云函数为我的应用程序开发API。
关注 this 站点以使用 firebase 模拟器套件在本地进行开发和测试。

问题:更改未反映在本地模拟函数中。

步骤:

  1. index.js:

    exports.test = functions.https.onRequest(async (request, response) => {
       response.status(200).send("First");
    });
    
  2. 已成功部署 test 方法。

    firebase deploy --only functions:test
    
  3. 在 Postman 中发出了以下 GET 请求。

     https://us-central1-<project-name>.cloudfunctions.net/test
    

    结果:第一个
    状态:200 正常

  4. 启动模拟器:

    firebase emulators:start --only functions
    
  5. 在 Postman 中发出了以下 GET 请求。

     http://localhost:5001/<project-name>/us-central1/indexTest
    

    结果:第一个
    状态:200 正常
    与实际部署的功能相同。

  6. 功能代码修改为:

    exports.test = functions.https.onRequest(async (request, response) => {
        response.status(200).send("Second");
    });
    
  7. 在本地主机中点击模拟函数时得到与以前相同的结果。更改未反映出来。

此外,尝试停止模拟器并重新启动它。运气不好。

我按照 DougStevenson 的建议在 firebase-tools 回购中提出了一个问题。 在 Sam Stern 的支持下解决了问题。

在此处发布解决方案,供遇到相同问题的其他人使用。

解法:

  1. 每次修改ts文件后,运行 "npm 运行 build" 再次编译代码。
  2. 如果您想在每次更改后自动编译,请在 package.json 中将 "build": "tsc" 更改为 "build": "tsc -w"