だから私は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 { }
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
を実行すると、angle-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: "..."
}
};
私のアプローチは、共通の環境オブジェクトと製品のオブジェクトをマージすることです。これが私の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: "..."}