首页 > 解决方案 > NullInjectorError:StaticInjectorError(平台:核心)[CompilerFactory] ​​Angular

问题描述

我的申请有问题。Angular 9.0.5 当我通过 Jenkins build pass 构建(ng build --prod)应用程序但工件(由即 http-server 运行)被破坏。

显示错误:

Uncaught NullInjectorError: StaticInjectorError(Platform: core)[CompilerFactory]: 
  NullInjectorError: No provider for CompilerFactory!
    at NullInjector.get (http://localhost:4201/vendor.js:17724:27)
    at resolveToken (http://localhost:4201/vendor.js:32313:24)
    at tryResolveToken (http://localhost:4201/vendor.js:32239:16)
    at StaticInjector.get (http://localhost:4201/vendor.js:32080:20)
    at compileNgModuleFactory__PRE_R3__ (http://localhost:4201/vendor.js:53780:38)
    at PlatformRef.bootstrapModule (http://localhost:4201/vendor.js:54124:16)
    at Module../src/main.ts (http://localhost:4201/main.js:729:77)
    at __webpack_require__ (http://localhost:4201/runtime.js:85:30)
    at Object.0 (http://localhost:4201/main.js:741:18)
    at __webpack_require__ (http://localhost:4201/runtime.js:85:30)

但是如果我去我的构建机器上的相同位置并执行 ng build --prod 那么工件正在工作。这对我来说是一种魔法。谁能帮我?

标签: angularjenkinsbuildangular9

解决方案


好的,我解决了问题。

在我的情况下,我被用作pnpm包管理器。作为依赖,我有未编译的包(打字稿)

詹金斯无法访问那条长路径( pnpm 使用存储解决依赖关系)

当我在构建工作区(没有清理)上进入这台机器并运行时ng build --prod ,构建被正确构建了工件。

解决方案 1:使用npm而不是pnpm
解决方案 2:不使用非编译包(打字稿)


推荐阅读