升级Angular12后运行Typedoc引入node_modules文件报错如何解决?
问题原因
Angular 12 升级后,项目根目录的tsconfig.json默认会引入全局类型声明路径,Typedoc运行时会默认读取根目录TS配置,连带把node_modules/@types下的类型声明也纳入编译校验范围。你原来的执行命令只排除了测试文件,没有限制类型声明的加载范围,最终触发了@types/eslint和@types/estree的版本不兼容报错——前者依赖的ImportExpression类型在当前已安装的后者版本中不存在。
可行解决方案
- 方案1:跳过类型校验快速生成文档
直接修改package.json中的脚本,添加跳过错误校验参数即可,不需要修改任何依赖或配置:"d": "typedoc --out doc --exclude **/*.spec.ts --skipErrorChecking ./projects/fs-is/src/lib" - 方案2:限制Typedoc编译范围(推荐)
在projects/fs-is/src/lib目录下新建专属的Typedoc配置文件tsconfig.typedoc.json,内容如下:
再修改脚本指定该配置文件:{ "extends": "../../../tsconfig.json", "exclude": ["node_modules", "**/*.spec.ts"], "compilerOptions": { "types": [] } }
该方案从编译层面排除了无关的全局类型加载,同时保留了业务代码的类型校验,稳定性更高。"d": "typedoc --out doc --tsconfig projects/fs-is/src/lib/tsconfig.typedoc.json ./projects/fs-is/src/lib" - 方案3:修复类型依赖兼容问题
如果你需要保留全局类型校验逻辑,直接升级@types/estree到匹配版本即可:
升级后的npm install @types/estree@latest --save-dev@types/estree会包含缺失的ImportExpression类型定义,报错会直接消失。
内容的提问来源于stack exchange,提问作者Ole
相关产品推荐
相关产品推荐

