我正在尝试设置我的开发环境。我在Windows 10计算机上使用Angular 5 TypeScript,VisualStudio IDE。我使用的是Firebase托管,Firestore和Firebase功能。我在'函数中编写函数' TypeScript(index.ts)文件中的文件夹。按照本地测试Firebase功能的说明进行操作(https://firebase.google.com/docs/functions/local-emulator)。我能够通过" firebase serve"在本地服务器上获得本地运行的功能。并通过函数Shell,如链接中所述。但是,当我对index.ts进行更改时,再次进行ping操作时不会更新该函数。它仅在我执行完整的" firebase部署功能时更新。命令。这违背了拥有本地函数模拟器的目的。我们的想法是避免在每次更改内容时都必须部署函数。也许,firebase.json的东西?我将其与“&n;”版本'。
的输出一起复制到下面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"
}
}
答案 0 :(得分:1)
TypeScript具有将代码转换为JavaScript(ES6)所需的转换阶段,云函数可以理解这一阶段。为了让模拟器获取更改,您必须进行转换阶段。
使用Firebase CLI为新的TypeScript项目创建的package.json,您可以运行npm run build
进行转换而无需部署。或者,您可以使用tsc --watch
让进程自动将更改转换为您的TypeScript。
听起来你的package.json可能很旧,并且不包含用于处理TypeScript的最新npm脚本。如果您没有npm run build
,我建议您使用最新版本的Firebase CLI重新创建它。
另外,我写了一篇关于此问题的详细博客 - you can read it here。