[英]Why won't Angular Firebase Cloud Functions Emulator update functions without a full deploy?
我正在嘗試設置開發環境。 我在Windows 10計算機上使用Angular 5 TypeScript,VisualStudio IDE。 我正在使用Firebase托管,Firestore和Firebase函數。 我在TypeScript(index.ts)文件的“ functions”文件夾中編寫函數。 遵循在本地測試Firebase功能的說明時( https://firebase.google.com/docs/functions/local-emulator )。 我可以通過“ firebase serve”和“功能外殼”在本地服務器上本地運行這些功能,如鏈接中所述。 但是,當我對index.ts進行更改時,再次ping時該函數不會更新。 僅在執行完整的“ firebase部署功能”命令時才會更新。 這違反了具有本地功能仿真器的目的。 這樣做的目的是避免每次更改某項功能時都必須部署功能。 也許與firebase.json有關? 我將其與“ ng version”的輸出一起復制到了下面。
Angular CLI: 1.6.8
Node: 6.11.5
OS: win32 x64
Angular: 5.2.4
... cdk, common, compiler, compiler-cli, core, forms, http
... language-service, material, platform-browser
... platform-browser-dynamic, router
@angular/animations: 5.2.5
@angular/cli: 1.6.8
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.8
@schematics/angular: 0.1.17
typescript: 2.5.3
webpack: 3.10.0
// firebase.json
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
],
"source": "functions"
},
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
"database": {
"rules": "database.rules.json"
}
}
TypeScript具有將代碼導入JavaScript(ES6)所需的轉換階段,Cloud Functions可以理解。 您必須使該轉換階段發生,以便仿真器提取更改。
使用Firebase CLI為新的TypeScript項目創建的package.json,您可以運行npm run build
進行編譯而不進行部署。 或者,您可以使用tsc --watch
使進程自動將更改轉譯為TypeScript。
聽起來您的package.json可能很舊,並且不包含用於處理TypeScript的最新npm腳本。 如果您沒有可用的npm run build
建議使用最新版本的Firebase CLI重新創建它。
另外,我已經寫了一個關於此的詳細博客- 您可以在此處閱讀 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.