Angular 9 ng build --prod 中的“超出了最大调用堆栈大小”

Adr*_*Ber 12 typescript angular ng-packagr

我有一个可以用 Angular 9 编译的库。但是如果我将标志更改为 --prod,这实际上使得"enableIvy": false我得到

[错误] RangeError:超出最大调用堆栈大小

在 Object.pathIsRelative (...\node_modules\typescript\lib\typescript.js:5778:34)

在 tryLoadModuleUsingPathsIfEligible (...\node_modules\typescript\lib\typescript.js:28346:37)

在 tryLoadModuleUsingOptionalResolutionSettings (...\node_modules\typescript\lib\typescript.js:28334:24)

在 tryResolve (...\node_modules\typescript\lib\typescript.js:28479:28)

在...\node_modules\typescript\lib\typescript.js:28471:69

在 Object.forEach (...\node_modules\typescript\lib\typescript.js:309:30)

在nodeModuleNameResolverWorker (...\node_modules\typescript\lib\typescript.js:28471:25)

在nodeModuleNameResolver (...\node_modules\typescript\lib\typescript.js:28464:16)

在 Object.resolveModuleName (...\node_modules\typescript\lib\typescript.js:28238:30)

在 CompilerHostAdapter.getMetadataFor (...\node_modules@angular\compiler-cli\src\metadata\bundler.js:567:37)

我在函数中引入了控制台调试消息function tryLoadModuleUsingPathsIfEligible(extensions, moduleName, loader, state),它似乎是一个大约 20moduleName秒的循环。我必须提到,如果我在没有标志的情况下编译,我不会有任何循环依赖警告--prod

更新:我修复了循环依赖关系,并且不再有任何警告。

Sh *_*lav 9

我也遇到了同样的问题angular 12.1.1,我没有循环依赖,解决方案是更改"enableIvy: false""compilationMode": "partial"

请参阅角度文档


LuJ*_*aks 0

最后,rm -rf node_modules我还需要做npm cache clean --force- 我还确保我确实更新了所有依赖项。(不确定其中哪一个起到了作用)