アプリをブラウザーprod/aotモードで実行しているときにメッセージを取得します。以下は私のmain-aot.tsです
Uncaught NullInjectorError:StaticInjectorError(Platform:core)[CompilerFactory]:NullInjectorError:CompilerFactoryのプロバイダーがありません!
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { platformBrowser } from '@angular/platform-browser';
//import { AppModuleNgFactory } from './app/app.module.ngfactory';
import { AppModule } from './app/app.module';
enableProdMode();
// tslint:disable-next-line:no-console
/*platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).catch(err => {
console.log('CANNOT LOAD AOT MODULE')
console.dir(AppModuleNgFactory);
console.error(err)
});*/
platformBrowser().bootstrapModule(AppModule).catch(err => {
console.log('CANNOT LOAD AOT MODULE')
console.dir(AppModule);
console.error(err)
});
Angular 9でIvyが有効になっている場合に必要になるため、 `` `ngcc``を実行していなかったため、このエラーが発生しました。これを修正するには、package.jsonスクリプトに以下を追加します:
"postinstall": "ngcc"
次にそれを実行しました:
npm run postinstall
また、次のbootstrapコードで十分でした。AOTを有効にした場合、platformBrowserDynamicは必要ありません。
platformBrowser().bootstrapModule(AppModule)