![](/img/trans.png)
[英]Why is my Firebase Functions emulator not running my changes in Typescript?
[英]Firebase Functions Emulator Not Reloading Upon Typescript Transpile
我在 angular/fire 項目中使用 firebase 仿真器套件,包括雲功能仿真器。 firebase 工具 9.23.1。 Typescript 版本 4.5.4。 在package.json
中主要屬性是"main": "lib/index.js",
開發環境是MacOS 12.1。
我運行tsc -w
來查看函數項目的 src 文件夾並轉換任何更改。 然后我使用firebase emulators:start
。 模擬器套件啟動成功,雲函數在啟動時使用函數中包含的代碼運行。
當我將更改保存在 /src 中的 a.ts 文件中時,主文件夾中的 .js 文件會立即反映這些更改; tsc -w
似乎正在按預期觀看和編譯。
但是當我在那之后調用模擬函數時,它們仍然運行保存和轉換之前的舊代碼。 Cloud firestore 的文檔說:
注意:您在活動 session 期間所做的代碼更改將由模擬器自動重新加載。 如果您的代碼需要轉譯(TypeScript、React),請確保在運行模擬器之前這樣做。 您可以使用 tsc -w 等命令在監視模式下運行您的轉譯器,以便在您保存時自動轉譯和重新加載代碼。
我不知道我在這里錯過了什么。 無論是使用腳本啟動觀察程序和模擬器還是手動執行,我都會得到相同的行為。 我也試過使用firebase serve --only functions
和firebase serve:shell
沒有運氣。 我需要在firebase emulators:start
說服仿真器注意變化嗎?
tsconfig.json文件是Typescript配置文件。 您可以使用該文件來設置編譯器,建立代碼格式化規則,最重要的是,告訴它您項目中的 TS 文件。 你明白了。 如果您想密切關注文件,請在 package 腳本中使用“watch”標志:tsc --watch。
tsc-watch的開發是為了使 TypeScript 的開發更容易。 類似於 nodemon 但對於 TypeScript,此命令通常用於重新啟動節點服務器。
腳本示例:
"scripts": {
"serve": "npm run build -- --watch | firebase emulators:start --only functions",
...
}`
這是一個示例 tsconfig.json 文件:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": false, "noImplicitAny": false, "removeComments": true, "noLib": false }, "include": [ "**/*" ], "exclude": [ "node_modules", "**/*.spec.ts" ]}
另一個可能不完美的選項是停止並重新運行模擬器。
我在網上閱讀的越多,我開始懷疑我的問題是我獨有的。 我見過其他情況,人們報告了類似的行為並且無法重現,這意味着我的應用程序中的某個地方存在潛在問題。
所以我正在查看我的應用程序模塊,並意識到我在那里有一些舊的 angularfire 導入。 我已經升級到 angularfire 7.2,但這些仍然存在,並且顯然與我的本地仿真搞亂了。 他們現在被移除了,一切都很好。 謝謝你的眼睛。
provideAnalytics(() => getAnalytics()),
provideAuth(() => getAuth()),
provideFirestore(() => getFirestore()),
provideFunctions(() => getFunctions()),
provideRemoteConfig(() => getRemoteConfig()),
provideStorage(() => getStorage()),```
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.