属性'fire:'在类型{production:boolean; }

Ant*_*nos 55 heroku environment-variables firebase firebase-hosting angular

所以我试图在Firebase和Heroku上构建和部署我的Angular 4应用程序,但是我遇到了如下错误:

/ Users/.../...中的错误(57,49):属性'firebase'在类型'{production:boolean; }".

它发生在我运行时ng build --prod,我的部署服务器工作正常.这是我的app.module.ts文件,供参考:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AngularFireModule } from 'angularfire2';
import { AngularFireDatabaseModule } from 'angularfire2/database';
import { Ng2ScrollimateModule } from 'ng2-scrollimate';
import { Ng2PageScrollModule } from 'ng2-page-scroll';

import { HttpModule } from '@angular/http';
import {
  trigger,
  state,
  style,
  animate,
  transition,
  keyframes
} from '@angular/animations';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { environment } from '../environments/environment';

import { AppComponent } from './app.component';

import { LogoComponent } from './logo/logo.component';
import { InfoComponent } from './info/info.component';
import { AboutComponent } from './about/about.component';
import { DividerComponent } from './divider/divider.component';
import { ProficienciesComponent } from './proficiencies/proficiencies.component';
import { ProficiencyComponent } from './proficiency/proficiency.component';
import { PortfolioComponent } from './portfolio/portfolio.component';
import { ProjectComponent } from './project/project.component';
import { ResumeComponent } from './resume/resume.component';
import { FooterComponent } from './footer/footer.component';
import { ContactComponent } from './contact/contact.component';
import { LoadingComponent } from './loading/loading.component';

@NgModule({
  declarations: [
    AppComponent,
    LogoComponent,
    InfoComponent,
    AboutComponent,
    DividerComponent,
    ProficienciesComponent,
    ProficiencyComponent,
    PortfolioComponent,
    ProjectComponent,
    ResumeComponent,
    FooterComponent,
    ContactComponent,
    LoadingComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    BrowserAnimationsModule,
    AngularFireModule.initializeApp(environment.firebase),
    AngularFireDatabaseModule,
    Ng2ScrollimateModule,
    Ng2PageScrollModule.forRoot()
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

environment.prod.ts

export const environment = {
  production: true
};
Run Code Online (Sandbox Code Playgroud)

environment.ts

export const environment = {
  production: true,
  firebase: {
        apiKey: "...",
        authDomain: "project.firebaseapp.com",
        databaseURL: "https://project.firebaseio.com",
        projectId: "project",
        storageBucket: "project.appspot.com",
        messagingSenderId: "..."
  }
};
Run Code Online (Sandbox Code Playgroud)

在为StackOverflow和GitHub寻找可能的解决方案之后,似乎没有开发人员遇到过这个确切的错误并发布了他们的发现,所以我想知道是否有人知道如何解决这个问题.非常感谢提前!

eko*_*eko 141

当你运行ng build --prodangular-cli将使用该environment.prod.ts文件而你的environment.prod.tsfiles environment变量没有该firebase字段因此你得到了异常.

将字段添加到 environment.prod.ts

export const environment = {
  production: true,
  firebase: {
    apiKey: "...",
    authDomain: "project.firebaseapp.com",
    databaseURL: "https://project.firebaseio.com",
    projectId: "project",
    storageBucket: "project.appspot.com",
    messagingSenderId: "..."
  }
};
Run Code Online (Sandbox Code Playgroud)

  • 先生,你是一个救生员.我所要做的就是将我的`environment.ts`代码复制到我的`environment.prod.ts`文件中.然后,我简单地运行:`ng build --prod`和`firebase deploy`. (8认同)

dhi*_*ilt 10

我的方法是将公共环境对象与生产环境对象合并。这是我的environment.prod.ts

import { environment as common } from './environment';

export const environment = {
  ...common,
  production: true
};
Run Code Online (Sandbox Code Playgroud)

因此,通用环境对象充当所有其他环境的可覆盖默认值。