正在为应用程序从angularjs迁移到angular v13,我正在尝试双 Boot 应用程序。
并在浏览器控制台中出现以下错误:
Uncaught Error: The injectable 'PlatformLocation' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.
The injectable is part of a library that has been partially compiled.
However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.
Ideally, the library is processed using the Angular Linker to become fully AOT compiled.
Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',
or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.
下面是我用来配置这个双 Boot 过程的文件。
main.ts
//angularjs imports
import { DoBootstrap, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
@NgModule({
imports: [
BrowserModule,
UpgradeModule
]
})
export class AppModule{
// Override Angular bootstrap so it doesn't do anything
ngDoBootstrap() {}
}
// Bootstrap using the UpgradeModule
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
console.log("Bootstrapping in Hybrid mode with Angular & AngularJS");
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.body, ['codecraft']);
});
我不想在main.ts中执行import '@angular/compiler';
,尽管这看起来暂时可行,但它会在以后迁移组件时导致类似的问题。
理想情况下,我不想禁用AOT或IVY。
已经试过了
1.“安装后”:“ngcc --属性es 2015浏览器模块主--仅第一个--创建Ivy入口点”
- npm更新
- Webpack配置中的Babel-Loader。
1条答案
按热度按时间7kjnsjlb1#
您很可能没有导入Angular 编译器。为了解决此问题,请在
main.ts
文件的顶部添加以下行:import '@angular/compiler';
添加以上内容后,重新启动服务器和/或再次构建应用程序,这样应该可以修复它。