在浏览器Pro / AOT模式下运行应用程序时获取消息。以下是我的main-aot.ts
未捕获的NullInjectorError:StaticInjectorError(平台:核心)[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)
});
答案 0 :(得分:1)
在带有常春藤的角度9中,不再有ngFactory文件,您不再需要main-aot.ts,只需要main.ts
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.error(err));
答案 1 :(得分:1)
我收到此错误是因为启用常春藤时我没有像现在Angular 9那样运行``ngcc''。因此,为解决此问题,我在package.json脚本中添加了以下内容:
"postinstall": "ngcc"
然后运行它:
npm run postinstall
此外,以下引导代码就足够了,启用AOT时不需要platformBrowserDynamic:
platformBrowser().bootstrapModule(AppModule)
答案 2 :(得分:1)
您可以尝试删除 ngcc
或删除已安装的 Angular 库并运行 postinstall
,而不是将 node_modules
添加到您的 npm install
脚本中。 这也可能解决此问题。
在我的特殊情况下,似乎发生的情况是依赖项之一是 Angular 库,它们被编译到 node_modules
中的文件夹中。从 Angular 10 更新到 11 后,该编译可能已缓存但应重新编译。
因此,运行 ngcc
或删除 node_modules
并重新安装依赖项似乎都可以解决问题。
答案 3 :(得分:0)
我最近在部署远程服务器后遇到了类似的错误:NullInjectorError: No provider for CompilerFactory!
。我完成了一个自动构建,该构建使用dist/
构建npm run build --prod
,将其更改为ng build --prod
对我来说很有效!
请使用类似的工具检查您的环境是否正在运行/构建应用程序。