You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ng test报TypeError: compilation参数需为Compilation实例,ng build正常

Angular库单元测试报错TypeError: The 'compilation' argument must be an instance of Compilation排查方向

执行ng test libraryprojectname运行单元测试时触发如下错误,但ng build可正常执行,项目为包含Angular库的工作区:

TypeError: The 'compilation' argument must be an instance of Compilation
    at Function.getCompilationHooks (C:\dev\MDM\node_modules\webpack\lib\javascript\JavascriptModulesPlugin.js:141:10)
    at SourceMapDevToolModuleOptionsPlugin.apply (C:\dev\MDM\node_modules\webpack\lib\SourceMapDevToolModuleOptionsPlugin.js:50:27)
    at C:\dev\MDM\node_modules\webpack\lib\SourceMapDevToolPlugin.js:163:53
    at Hook.eval [as call] (eval at create (C:\dev\MDM\projects\libraryprojectname\node_modules\tapable\lib\HookCodeFactory.js:19:10), <anonymous>:108:1)
    at Hook.CALL_DELEGATE [as _call] (C:\dev\MDM\projects\libraryprojectname\node_modules\tapable\lib\Hook.js:14:14)
    at Compiler.newCompilation (C:\dev\MDM\projects\libraryprojectname\node_modules\webpack\lib\Compiler.js:1122:26)
    at C:\dev\MDM\projects\libraryprojectname\node_modules\webpack\lib\Compiler.js:1166:29
    at Hook.eval [as callAsync] (eval at create (C:\dev\MDM\projects\libraryprojectname\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\dev\MDM\projects\libraryprojectname\node_modules\tapable\lib\Hook.js:18:14)
    at Compiler.compile (C:\dev\MDM\projects\libraryprojectname\node_modules\webpack\lib\Compiler.js:1161:28)

排查方向:

  • 检查webpack版本冲突:工作区根目录和库子目录的node_modules可能存在多版本webpack,导致实例不兼容。删除整个工作区的node_modules、package-lock.json/yarn.lock,重新执行npm install或yarn install统一版本。
  • 验证测试阶段的webpack插件配置:查看库项目的karma.conf.js或angular.json中测试环节的webpack配置,是否手动引入了与当前webpack版本不兼容的插件(比如自定义SourceMap插件),尝试注释后重试测试。
  • 确认Angular版本匹配:Angular CLI版本与库项目的@angular/core、@angular/compiler等核心依赖必须严格对应,运行ng version核对工作区和库的版本,不一致则升级/降级到匹配版本。
  • 排查测试环境依赖污染:检查是否有第三方测试工具(如jest、cypress)的残留配置干扰webpack编译,暂时禁用非官方测试插件后重新执行测试。
  • 检查测试用tsconfig配置:核对库项目的tsconfig.spec.json里的target、module等编译选项是否与build用的tsconfig.lib.json一致,避免编译出不兼容代码导致webpack处理失败。

内容的提问来源于stack exchange,提问作者Mr Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:05:31