首页 > 解决方案 > 当 projectId 作为环境变量发送时,Angular Firebase 不起作用

问题描述

这是我的情况,我在我的项目中设置了 angular firebase,这个项目应该部署在几个环境中,所以我设置 webpack 将环境变量传递给 environment.prod.ts 文件,所以我不需要做在一种或另一种环境中部署时对代码的任何更改

这就是我的 environment.prod.ts 文件的样子:

export const environment = {
  // other variables
  firebase: {
    apiKey: process.env.FIREBASE_APIKEY,
    authDomain: process.env.FIREBASE_AUTHDOMAIN,
    databaseURL: process.env.FIREBASE_DATABASEURL,
    projectId: process.env.FIREBASE_PROJECTID,
    storageBucket: process.env.FIREBASE_STORAGEBUCKET,
    messagingSenderId: process.env.FIREBASE_MESSAGINGSENDERID,
    appId: process.env.FIREBASE_APPID,
    measurementId: process.env.FIREBASE_MEASUREMENTID
  }
};

我对环境变量的推断如下:

declare var process: Process;

interface Process {
  env: Env
}

interface Env {
  FIREBASE_APIKEY: string,
  FIREBASE_AUTHDOMAIN: string,
  FIREBASE_DATABASEURL: string,
  FIREBASE_PROJECTID: string,
  FIREBASE_STORAGEBUCKET: string,
  FIREBASE_MESSAGINGSENDERID: string,
  FIREBASE_APPID: string,
  FIREBASE_MEASUREMENTID: string
}

interface GlobalEnvironment {
  process: Process
}

并导入我的 app.module.ts

@NgModule({
  imports: [
    CommonModule,
    AngularFireModule.initializeApp(environment.firebase),
    AngularFireAnalyticsModule,
    AngularFirestoreModule,
    AngularFireAuthModule
  ]
  // ...
})

但是由于某种原因,当我这样做时,一旦部署了我的应用程序并在控制台中出现此错误,就无法识别 projectId 变量

main.973a03e40daff299cb0a.js:1 ERROR FirebaseError: projectId must be a string in FirebaseApp.options
    at new e (http://192.168.43.214:8876/main.973a03e40daff299cb0a.js:1:49175)
    at Function.t.YT (http://192.168.43.214:8876/main.973a03e40daff299cb0a.js:1:267849)

但是,当我直接在环境文件中将 projectId (其值)设置为字符串时,一切正常,我尝试在 app.module.ts 加载后与字符串连接或重铸 firebase 对象,并登录浏览器控制台值,一切正常那里,但仍然触发该错误,我现在不知道为什么。

我会非常感谢你的帮助。(对不起,我的英语不好)

标签: angulartypescriptfirebasewebpackangularfire2

解决方案


推荐阅读