Angular10升级至17时遇命名空间导出成员缺失等错误求助
Angular 10升级到11.2.9错误解决方案
针对你升级过程中遇到的三类错误,逐一给出解决步骤:
1. TS2694:@angular/core/core无导出成员ɵɵFactoryDeclaration、ɵɵNgModuleDeclaration
这类错误源于直接使用了Angular内部私有API,或依赖库版本不兼容:
- 排查项目代码:搜索是否有手动导入/使用
ɵɵFactoryDeclaration、ɵɵNgModuleDeclaration的代码,这些是Angular内部实现,禁止在业务代码中直接使用,替换为CLI自动生成的模块/组件声明逻辑。 - 适配依赖版本:检查第三方库(如
ngx-intl-tel-input)是否兼容Angular 11,若版本过低,升级到对应兼容版本。
2. TS2304:找不到名称i1
这个错误是变量未定义或拼写错误:
- 全局搜索项目中的
i1,定位到未声明的位置:- 若为模板中使用的变量,确保组件类中已定义该变量;
- 若为拼写错误(如误写
i18n为i1),修正拼写即可; - 若来自第三方库模板,升级库到兼容Angular 11的版本。
3. ngx-intl-tel-input无法从非ESM模块导入BsDropdownDirective、CommonModule
该问题是ngx-intl-tel-input与Angular 11模块系统、依赖库版本不匹配导致:
- 升级
ngx-intl-tel-input:Angular 11对应兼容版本为^4.0.0,将package.json中该依赖改为"ngx-intl-tel-input": "^4.0.0"; - 调整
ngx-bootstrap版本:Angular 11需搭配ngx-bootstrap 6.x(7.x对应Angular 12),修改为"ngx-bootstrap": "^6.2.0"; - 配置TypeScript:在
tsconfig.json中确保allowSyntheticDefaultImports: true和esModuleInterop: true,解决非ESM模块的导入兼容问题。
依赖修改后执行命令
npm install # 或 yarn install
内容的提问来源于stack exchange,提问作者rakshith
相关产品推荐
相关产品推荐

