我正在尝试使用 Firebase 云函数为我的应用程序开发 API。
继本网站使用火力仿真器套件的开发和本地测试。
问题:更改未反映在本地模拟功能中。
脚步:
索引.js:
exports.test = functions.https.onRequest(async (request, response) => {
response.status(200).send("First");
});
Run Code Online (Sandbox Code Playgroud)
成功部署了该test方法。
firebase deploy --only functions:test
Run Code Online (Sandbox Code Playgroud)
在 Postman 中提出了以下 GET 请求。
https://us-central1-<project-name>.cloudfunctions.net/test
Run Code Online (Sandbox Code Playgroud)
结果:第一个
状态:200 OK
启动模拟器:
firebase emulators:start --only functions
Run Code Online (Sandbox Code Playgroud)
在 Postman 中提出了以下 GET 请求。
http://localhost:5001/<project-name>/us-central1/indexTest
Run Code Online (Sandbox Code Playgroud)
结果:第一个
状态:200 OK
与实际部署的功能相同。
将功能代码更改为:
exports.test = functions.https.onRequest(async (request, response) => {
response.status(200).send("Second");
});
Run Code Online (Sandbox Code Playgroud)
在本地主机中点击模拟函数时获得与以前相同的结果。未反映更改。
此外,尝试停止模拟器并重新启动它。没运气。
我在 Angular/Fire 项目中使用 Firebase 模拟器套件,包括云函数模拟器。firebase 工具 9.23.1。打字稿版本 4.5.4。package.json主要属性是开发"main": "lib/index.js",环境是MacOS 12.1。
我跑去tsc -w观察函数项目的 src 文件夹并转换任何更改。然后我使用启动模拟器firebase emulators:start。模拟器套件启动成功,云函数使用启动时函数中包含的代码运行。
当我将对代码的更改保存到 /src 中的 .ts 文件中时,主文件夹中的 .js 文件会立即反映这些更改;tsc -w似乎正在按预期进行观察和转译。
但是当我之后调用模拟函数时,它们仍然运行保存和转换之前的旧代码。Cloud firestore的文档说:
注意:模拟器会自动重新加载您在活动会话期间所做的代码更改。如果您的代码需要转译(TypeScript、React),请确保在运行模拟器之前执行此操作。您可以使用 tsc -w 等命令在监视模式下运行转译器,以便在保存时自动转译和重新加载代码。
我不知道我在这里缺少什么。无论我使用脚本启动观察程序和模拟器还是手动启动,我都会得到相同的行为。我也尝试过使用firebase serve --only functionsandfirebase serve:shell没有运气。我需要使用一个标志firebase emulators:start来说服模拟器观察更改吗?
firebase typescript firebase-tools google-cloud-functions angularfire2