[angular] 유형 {production : boolean; }

그래서 Firebase와 Heroku에서 프로덕션 용 Angular 4 앱을 빌드하고 배포하려고했지만 다음과 같은 오류가 발생했습니다.

오류 /Users/…/…(57,49) : ‘{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 {}

environment.prod.ts

export const environment = {
  production: true
};

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: '...',
  },
};

가능한 해결책을 찾기 위해 StackOverflow와 GitHub를 샅샅이 뒤져 보니이 정확한 오류가 발생하여 결과를 발표 한 개발자가없는 것 같아서이 문제를 해결하는 방법을 아는 사람이 있는지 궁금합니다. 미리 감사드립니다!



답변

당신이 실행하면 ng build --prod각-CLI는 사용할 environment.prod.ts파일과 environment.prod.ts파일 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: '...',
  },
};


답변

내 접근 방식은 공통 환경 개체를 prod 개체와 병합하는 것입니다. 내 environment.prod.ts는 다음과 같습니다 .

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

export const environment = {
  ...common,
  production: true
};

따라서 공통 환경 개체는 다른 모든 환경에 대해 재정의 가능한 기본값으로 작동합니다.


답변

나는 코드에서 중복되는 것을 싫어
하므로 environments/firebase.ts콘텐츠로 명명 된 별도의 파일을 만들어 보겠습니다.

export const firebase = {
    //...
};

사용법

import {firebase} from '../environments/firebase';
//...
AngularFireModule.initializeApp(firebase)

나에 관해서는 모든 것이 명확하다


답변

‘firebase’를 ‘firebas’로 잘못 입력했기 때문에 동일한 오류가 발생했습니다.

firebas : {apiKey : “…”, authDomain : “project.firebaseapp.com”, databaseURL : ” https://project.firebaseio.com “, projectId : “project”, storageBucket : “project.appspot.com” , messagingSenderId : “…”}


답변

firebase과 사이에 간격이 없는지 확인하십시오 :.

즉, 그것은해야 firebase:하지 firebase :.


답변