我在 angular/fire 專案中使用 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 functions和firebase serve:shell沒有運氣。是否有我需要使用的標志firebase emulators:start來說服模擬器注意更改?
uj5u.com熱心網友回復:
tsconfig.json 檔案是一個 Typescript 組態檔。您可以使用該檔案來設定編譯器,建立代碼格式規則,最重要的是,告訴它您專案中的 TS 檔案。你已經知道了。如果您想密切關注檔案,請在您的包腳本中使用“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" ]}
另一個可能不完美的選項是停止并重新運行模擬器。
uj5u.com熱心網友回復:
我在網上閱讀的越多,我開始懷疑我的問題是我獨有的。我還看到其他案例,人們報告了類似的行為并且無法重現,這意味著我的應用程式中的某個地方存在潛在問題。
所以我查看了我的應用程式模塊并意識到我在那里有一些舊的 angularfire 匯入。我已經升級到 angularfire 7.2,但這些仍然存在,而且顯然會干擾我的本地仿真。他們現在被移除了,一切都很好。謝謝你的眼睛。
provideAnalytics(() => getAnalytics()),
provideAuth(() => getAuth()),
provideFirestore(() => getFirestore()),
provideFunctions(() => getFunctions()),
provideRemoteConfig(() => getRemoteConfig()),
provideStorage(() => getStorage()),```
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392711.html
上一篇:我不想在javascript中將一串數字格式化為貨幣,但我不知道如何格式化我的字串
下一篇:尋找更好的方式來構建代碼
