簡體   English   中英

Firebase 功能模擬器在 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 functionsfirebase 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM