ABP3.3升级4.2及Angular升级11后出现ConfigState相关language未定义错误
ABP 3.3升级4.2 + Angular 11 语言属性未定义报错解决方案
- 替换所有弃用的
ConfigState调用
ABP 4.0版本起已将原ConfigState中的语言、会话类属性拆分到SessionState中,项目中所有旧的取值逻辑必须替换:
错误旧写法:
正确新写法:import { ConfigState } from '@abp/ng.core'; const currentLang = this.store.selectSnapshot(ConfigState.getLanguage);
需全局排查所有自定义服务、拦截器、初始化逻辑中的相关调用,全部替换完成。import { SessionState } from '@abp/ng.core'; const currentLang = this.store.selectSnapshot(SessionState.getLanguage); - 检查ABP相关依赖版本一致性
打开package.json确认所有@abp/前缀的包版本统一为4.2.x,避免不同版本的ABP包混用导致内部调用异常。 - 校验根模块ABP配置完整性
确保AppModule中CoreModule.forRoot的配置包含默认语言声明:CoreModule.forRoot({ // 其他原有配置 localization: { defaultResourceName: '你的项目资源名称', defaultCultureName: 'zh-Hans' // 替换为你实际使用的默认语言编码 } }) - 清理缓存重启项目
执行以下命令清理旧版本缓存,避免残留文件导致异常:# 删除依赖目录和锁文件 rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 清理Angular编译缓存 ng cache clean # 启动项目 ng serve - 排查自定义初始化逻辑执行顺序
如果你自行配置了APP_INITIALIZER相关的初始化逻辑,确保你的初始化逻辑不会早于ABP内置的会话状态初始化完成,不要在状态未初始化时调用语言相关的取值方法。
内容的提问来源于stack exchange,提问作者user2387215
相关产品推荐
相关产品推荐

