我正在将有角度的应用程序转换为有角度的lib。我生成了angular lib项目并缓慢移动模块。现在,在构建库时出现以下错误。
ng build lib
错误
Cannot read property 'module' of undefined
TypeError: Cannot read property 'module' of undefined
at MetadataBundler.convertSymbol (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:312:61)
at createReference (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:438:27)
at MetadataBundler.convertReference (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:486:28)
at MetadataBundler.convertExpression (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:415:37)
at C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:364:79
at Array.map (<anonymous>)
at MetadataBundler.convertMember (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:364:47)
at C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:349:70
at Array.map (<anonymous>)
at MetadataBundler.convertMembers (C:\Code\abc\client\node_modules\@angular\compiler-cli\src\metadata\bundler.js:349:38)
通常,当尝试在模块中错误地注册依赖项时,会导致此错误。如何找到配置的哪一部分会导致此异常?
在角度应用程序中工作正常。
答案 0 :(得分:3)
如果angular决定无法通过aot编译,则可以尝试进入node_modules\@angular\compiler-cli\src\metadata\bundler.js
并在该文件中进行一些控制台登录。
我将从在convertSymbol函数中放置console.log开始。
那应该为您提供一些有关在进行模块编译之前angular cli使用的文件路径的信息。
例如,在我的案例中,是从桶中重新导出常量的结果破坏了编译
因此,找到TWO_FA_INITIAL_STATE的所有用法,然后直接导入TWO_FA_INITIAL_STATE,就可以解决该特定问题。
答案 1 :(得分:0)
当我忘记在public-api.ts中导出特定文件时,这发生在我身上。问题文件基本上是模块根,只是从模块中重新导出其他文件。
当我尝试从所述文件中导入符号时,它会给我这个错误(但甚至没有调用堆栈)。
这真的很奇怪,但是将所述文件添加到public-api.ts中解决了这个问题(我说这很奇怪,因为我最初没有从public-api.ts中导入上述符号)
答案 2 :(得分:0)
我刚刚用以下文件结构遇到了这个问题:
components/component-n/component-n.component.ts
components/index.ts
my-module.ts
其中 components/index.ts
包含:
export { ComponentN } from './component-n/component-n.component.ts';
并且 my-module.ts
包含:
import { ComponentN } from './components';
@NgModule({
// ...
declarations: [
ComponentN
]
})
export class MyModule {}
事实证明 Angular 编译器无法处理这个问题并抛出“无法读取未定义的属性‘模块’”错误。
将 my-module.ts
改为直接从 components/component-n/component-n.component.ts
导入,并删除 index.ts
,为我修复了它。