Angular8升级至9后@zerohouse/router-tab类型文件未声明导入报错
报错原因
- 你当前安装的
@zerohouse/router-tab@0.0.7仅适配Angular 8及更低版本,Angular 9默认启用Ivy编译器,对第三方库的模块声明、导入规则做了不向下兼容的调整,旧版本库未适配对应规则触发报错。 @zerohouse/router-tab从0.0.8版本才开始支持Angular 9及更高版本的Ivy编译模式,你升级Angular框架后没有同步升级该依赖,是问题的直接诱因。
解决方案
方案1:升级@zerohouse/router-tab到适配版本(优先推荐)
执行如下命令升级依赖:
npm install @zerohouse/router-tab@0.0.8 --save
升级完成后重新执行项目启动或构建命令即可,该版本官方已经完成Angular 9的适配。
方案2:临时关闭Ivy编译(仅作为临时兼容方案,不推荐长期使用)
如果升级依赖后出现其他兼容性问题,可临时关闭Ivy编译器规避问题:
打开项目根目录的tsconfig.json文件,在angularCompilerOptions配置节点下添加参数:
{ "angularCompilerOptions": { "enableIvy": false } }
保存配置后重新运行项目即可。注意关闭Ivy会损失Angular 9带来的编译速度、包体积等多方面的性能优化,仅建议作为临时过渡方案使用。
方案3:手动补全类型声明
如果上述两个方案都无法解决问题,可手动添加模块声明解决报错:
- 若项目存在
src/typings.d.ts文件,直接在文件末尾添加如下代码:
declare module '@zerohouse/router-tab';
- 若没有该文件,可在
src/polyfills.ts文件末尾添加上述代码即可。
内容的提问来源于stack exchange,提问作者Santosh Kumar
相关产品推荐
相关产品推荐

