【发布时间】:2022-01-04 17:22:12
【问题描述】:
我的 Angular 应用程序通过 Node 16.13.0 提供服务。更新到 Angular 13 后,我收到以下错误:
可注入 [class PlatformLocation] 的 JIT 编译失败 file:///Users/btaylor/work/angular-apps/dz-outages-ui/node_modules/@angular/core/fesm2015/core.mjs:4058 抛出新的错误(消息); ^
错误:需要使用 JIT 编译器编译可注入的“PlatformLocation”,但“@angular/compiler”不可用。
injectable 是已部分编译的库的一部分。 但是,Angular 链接器没有处理这个库,因此 JIT 编译被用作后备。
理想情况下,该库使用 Angular 链接器进行处理,以完全 AOT 编译。 或者,应使用“@angular/platform-browser-dynamic”或“@angular/platform-server”通过引导加载 JIT 编译器, 或手动为编译器提供'import "@angular/compiler";'在引导之前。 在 getCompilerFacade (file:///Users/btaylor/work/angular-apps/dz-outages-ui/node_modules/@angular/core/fesm2015/core.mjs:4058:15) 在 Module.ɵɵngDeclareFactory (file:///Users/btaylor/work/angular-apps/dz-outages-ui/node_modules/@angular/core/fesm2015/core.mjs:32999:22) 在 file:///Users/btaylor/work/angular-apps/dz-outages-ui/node_modules/@angular/common/fesm2015/common.mjs:90:28 在 ModuleJob.run (节点:内部/模块/esm/module_job:185:25) 在异步 Promise.all(索引 0) 在异步 ESMLoader.import (node:internal/modules/esm/loader:281:24) 在异步加载ESM(节点:内部/进程/esm_loader:88:5) at async handleMainPromise (node:internal/modules/run_main:65:12)
我尝试了很多解决方案,例如:Angular JIT compilation failed: '@angular/compiler' not loaded
目前,我的 package.json 中有 "type": "module"
我已将我的安装后命令更新为:ngcc --properties es2020 browser module main --first-only --create-ivy-entry-points
我还将import '@angular/compiler'; 添加到我的main.ts 文件中。
项目将编译,但不会通过 Node 运行。
【问题讨论】:
-
我有同样的错误。对解决方案非常感兴趣。
-
@RushPL 我也是。我需要找一些时间进行最小限度的复制,以便向 Angular 团队提出错误。我有另一个使用 Universal 和 Angular 13 的应用程序,效果很好。
-
这个问题一定是由于特定的依赖关系,因为我能够毫无问题地将另一个具有相同架构的 Angular 12 应用程序转换为 13。
-
Angular CLI 应该不会有这个问题,因为它自己配置了 webpack+babel。
-
这里一样.....
标签: node.js angular typescript