在我的Angular 9(最新版本)中,我使用了几个自己的库。这些库使用“ paths”属性包含在tsconfig.json中,然后在应用程序中使用。
我创建了一个新的库,该库使用了Angular Cdk库中的大量CdkPortal,在编译导入该库的根应用程序时,我收到以下错误消息。在此之前,我会编译库本身,并且没有构建错误:
Compiling cap-gui-components : module as esm5
Error: Error on worker #1: Error: Failed to find exported name of node (CapGuiSettingsDialogContainerComponent
与Cdk动态加载的所有组件都将生成此错误消息。从理论上讲,这些组件不需要在index.ts文件中导出,因为它们仅在库本身中使用。如果导出它们,则不会收到错误消息。
完整错误消息:
ompiling cap-gui-components : module as esm5
Error: Error on worker #1: Error: Failed to find exported name of node (CapGuiSettingsDialogContainerComponent = /** @class */ (function () {
// ************************************************************************************************
/** Constructor */
...code...
in 'C:/Users/Arbeit/dev/CaptureWebApplications/dist/cap-gui-components/fesm5/cap-gui-components.js'.
at Object.findExportedNameOfNode (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\imports\src\find_export.js:35:19)
at LogicalProjectStrategy.emit (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\imports\src\emitter.js:228:38)
at ReferenceEmitter.emit (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\imports\src\emitter.js:71:44)
at Object.toR3Reference (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\annotations\src\util.js:192:31)
at NgModuleDecoratorHandler._toR3Reference (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\annotations\src\ng_module.js:417:31)
at C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\annotations\src\ng_module.js:196:83
at Array.map (<anonymous>)
at NgModuleDecoratorHandler.analyze (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\annotations\src\ng_module.js:196:48)
at NgccTraitCompiler.TraitCompiler.analyzeTrait (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\transform\src\compilation.js:345:40)
at analyze (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\src\ngtsc\transform\src\compilation.js:297:58)
at ClusterMaster.onWorkerMessage (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\ngcc\src\execution\cluster\master.js:168:27)
at C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\ngcc\src\execution\cluster\master.js:52:95
at ClusterMaster.<anonymous> (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\ngcc\src\execution\cluster\master.js:248:57)
at step (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\tslib\tslib.js:139:27)
at Object.next (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\tslib\tslib.js:120:57)
at C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\tslib\tslib.js:113:75
at new Promise (<anonymous>)
at Object.__awaiter (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\tslib\tslib.js:109:16)
at EventEmitter.<anonymous> (C:\Users\Arbeit\dev\CaptureWebApplications\node_modules\@angular\compiler-cli\ngcc\src\execution\cluster\master.js:242:32)
at EventEmitter.emit (events.js:311:20)
An unhandled exception occurred: NGCC failed.
See "C:\Users\Arbeit\AppData\Local\Temp\ng-dpI2TJ\angular-errors.log" for further details.
为什么我需要导出这些组件?还有没有其他方法可以构建该库,而无需导出这些组件?
甚至在一小时后,我也找到了解决方案。我需要在tsconfig.lib.prod.ts中启用常春藤。现在,该库可以使用Ivy进行编译,目前尚不推荐这样做,但是一切正常。