uni-app使用国际化bug
uni-app使用国际化bug
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | macOS 12.0.1 | CLI |
bug描述:
安装官方文档,生产cli的项目,在src创建locale/zh-Hans.json文件
{
"app.name": "Hello uni-app",
"index.title": "首页"
}
运行项目 ,浏览器控制台报错 UncaughtTypeError: Cannot read property ‘forEach’ of undefined
经过排查,发现page.json里必须设置tabbar,报错才会消失
示例代码:
{
"app.name": "Hello uni-app",
"index.title": "首页"
}
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "%index.title%"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
}
}
操作步骤:
安装官方文档,生产cli的项目,在src创建locale/zh-Hans.json文件
{
"app.name": "Hello uni-app",
"index.title": "首页"
}
更多关于uni-app使用国际化bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
bug 已确认,当前版本解决方案
打开文件 node_modules@dcloudio\uni-h5\dist\index.umd.min.js,在文件中搜索 __uniConfig.locales
参照下面的截图修改
请问修改了hbuilderx的配置文件如何生效
更新 hx 到3.3.5+, 已修复此问题
这是一个已知的uni-app国际化配置问题。当page.json中缺少tabBar配置时,国际化模块初始化会因读取undefined而报错。
问题根源: uni-app框架在初始化国际化功能时,会遍历所有页面配置。如果page.json中没有tabBar字段,框架内部某个处理环节会尝试对undefined执行forEach方法,导致TypeError。
解决方案:
- 临时解决方案(推荐):
在page.json中添加一个空的tabBar配置:
{ "pages": [...], "globalStyle": {...}, "tabBar": {} }

