I followed this tutorial to deploy Angular Universal to a firebase function and deploy with Firebase: https://medium.com/@chris.duebbert/angular-9-universal-firebase-deploy-8d8d47244e1c
Everything worked fine until I add AngularFireModule to my app.module.ts. Then when I run 'ng deploy' using node 12 I get the following error in the logs of my 'ssr' function:
Provided module can't be loaded. Is there a syntax error in your code? Detailed stack trace: ReferenceError: globalThis is not defined
When I try with my local node version set to 10 I get the same error directly in my terminal.
Apparently, Firebase uses globalThis which requires node version 12 (Angular 11 run on SSR @nguniversal/express-engine ReferenceError: globalThis is not defined). I added the following to my /functions/package.json:
app.module.ts
    "engines": {
        "node": "12"
      },
I can put any number for node version and my SSR function is still deploying with node 10 and the 'globalThis' error continues. I'm using Firebase's Blaze plan. Here's my 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
    }
                You need to polyfill globalThis https://github.com/angular/angularfire#polyfills
Two weeks looking for a solution, until I have found this question/answer. Thank you!
Steps to solve the problem:
> npm install globalthis
on server.ts file:
import 'globalthis/auto';
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With