Angular v6构建库时出现Cannot read property 'type' of null错误求助
解决Angular v6自定义库构建时的
Cannot read property 'type' of null错误 这个错误我在Angular v6开发自定义库的时候也踩过坑,从堆栈信息来看,问题出在Angular编译器处理模板的阶段,尤其是removeSummaryDuplicates这个步骤——大概率是模板语法错误或者组件元数据冲突导致的。下面是我亲测有效的排查和解决步骤:
优先检查模板语法错误:
这个错误最常见的诱因就是组件模板里存在无效语法,比如:- 未闭合的HTML标签(比如只写了
<div>却没加对应的</div>) - 结构指令使用错误,比如漏写
*号(写成ngIf而非*ngIf),或者表达式里引用了未定义的变量 - 重复定义了模板引用变量(比如同一个模板里出现两个
#input)
- 未闭合的HTML标签(比如只写了
核对组件的模板路径:
检查所有组件@Component装饰器里的templateUrl,确保路径拼写正确,指向的文件确实存在。如果路径写错了,编译器找不到模板文件也会抛出这类模糊的错误。排查重复的组件选择器:
如果你的库中有多个组件使用了相同的selector,AOT编译时会出现符号冲突,进而触发这个错误。逐个检查组件的选择器,确保每个都是唯一的。清理缓存并重新构建:
有时候缓存文件损坏也会导致奇怪的编译错误,执行以下步骤试试:- 删除项目根目录下的
node_modules文件夹 - 删除
dist文件夹(如果是库项目,就是库对应的dist目录) - 运行
npm install重新安装依赖 - 再尝试构建库
- 删除项目根目录下的
检查模块导入是否完整:
如果模板中使用了某个组件或指令,但对应的模块没有在当前组件所属的NgModule中导入,编译器处理模板时也可能出现这类空引用错误。确保所有用到的组件/指令都已经正确导入并声明(或通过导入对应模块引入)。
如果以上步骤都试过还是没解决,可以尝试注释掉最近新增的组件或模板代码,逐步排查出具体是哪个部分导致的问题。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

