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 回复

我是图

更多关于uni-app使用国际化bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html


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。

解决方案:

  1. 临时解决方案(推荐): 在page.json中添加一个空的tabBar配置:
    {
      "pages": [...],
      "globalStyle": {...},
      "tabBar": {}
    }
回到顶部