无法使用 AngularFire 将 Angular 通用应用程序中的 firebase 功能更新到节点 12
Can't update firebase function to node 12 in Angular Universal app with AngularFire
我按照本教程将 Angular Universal 部署到 firebase 函数并使用 Firebase 进行部署:https://medium.com/@chris.duebbert/angular-9-universal-firebase-deploy-8d8d47244e1c
一切正常,直到我将 AngularFireModule 添加到我的 app.module.ts。然后,当我 运行 'ng deploy' 使用节点 12 时,我在 'ssr' 函数的日志中收到以下错误:
提供的模块无法加载。
您的代码中是否存在语法错误?
详细堆栈跟踪:ReferenceError: globalThis 未定义
当我尝试将本地节点版本设置为 10 时,我直接在终端中收到相同的错误。
显然,Firebase 使用 globalThis,它需要节点版本 12 ()。我将以下内容添加到我的 /functions/package.json:
app.module.ts
"engines": {
"node": "12"
},
我可以为节点版本输入任何数字,我的 SSR 函数仍在部署节点 10,并且 'globalThis' 错误继续存在。我正在使用 Firebase 的 Blaze 计划。这是我的 app.module.ts:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule.withServerTransition({ appId: 'serverApp' }),
AppRoutingModule,
NoopAnimationsModule,
FormsModule,
NgxTwitterTimelineModule,
AngularFireModule.initializeApp(config),
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
functions/package.json
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase emulators:start --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "12"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "^9.4.2",
"firebase-functions": "^3.13.0",
"grpc": "^1.24.4"
},
"devDependencies": {
"tslint": "^5.12.0",
"typescript": "^3.8.0",
"firebase-functions-test": "^0.2.0"
},
"private": true
}
你需要 polyfill globalThis https://github.com/angular/angularfire#polyfills
两周寻找解决方案,直到我找到这个 question/answer。谢谢!
解决问题的步骤:
> npm install globalthis
在 server.ts
文件上:
import 'globalthis/auto';
我按照本教程将 Angular Universal 部署到 firebase 函数并使用 Firebase 进行部署:https://medium.com/@chris.duebbert/angular-9-universal-firebase-deploy-8d8d47244e1c
一切正常,直到我将 AngularFireModule 添加到我的 app.module.ts。然后,当我 运行 'ng deploy' 使用节点 12 时,我在 'ssr' 函数的日志中收到以下错误:
提供的模块无法加载。 您的代码中是否存在语法错误? 详细堆栈跟踪:ReferenceError: globalThis 未定义
当我尝试将本地节点版本设置为 10 时,我直接在终端中收到相同的错误。
显然,Firebase 使用 globalThis,它需要节点版本 12 (
app.module.ts
"engines": {
"node": "12"
},
我可以为节点版本输入任何数字,我的 SSR 函数仍在部署节点 10,并且 'globalThis' 错误继续存在。我正在使用 Firebase 的 Blaze 计划。这是我的 app.module.ts:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule.withServerTransition({ appId: 'serverApp' }),
AppRoutingModule,
NoopAnimationsModule,
FormsModule,
NgxTwitterTimelineModule,
AngularFireModule.initializeApp(config),
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
functions/package.json
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase emulators:start --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "12"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "^9.4.2",
"firebase-functions": "^3.13.0",
"grpc": "^1.24.4"
},
"devDependencies": {
"tslint": "^5.12.0",
"typescript": "^3.8.0",
"firebase-functions-test": "^0.2.0"
},
"private": true
}
你需要 polyfill globalThis https://github.com/angular/angularfire#polyfills
两周寻找解决方案,直到我找到这个 question/answer。谢谢!
解决问题的步骤:
> npm install globalthis
在 server.ts
文件上:
import 'globalthis/auto';