uni-app i18n 国际化项目打包成微信小程序分包 $i18n undefined问题

nc1teljy  于 4个月前  发布在  uni-app
关注(0)|答案(3)|浏览(143)

问题描述
uniapp项目中引入了i18n项目
打包成微信小程序主体运行是正常的
但是如果打包成微信小程序分包的形式,让主包引入。进入分包后,会报错如下:
TypeError: Cannot read property '_t' of undefined
进入源码后发现,实际是this.$i18n返回undefined

系统信息:

通过编写测试代码发现:
1.在分包情况下,main.js中输出的this.$i18n是有值的
2.但在具体页面上输出this.$i18n是没有值的
3.除了分包场景下,其他场景(H5,微信小程序主包)下均正常

debug了下,分包场景下,源码中这段里app.$vm是Unidefined,导致挂载失败
小程序场景是ok的

File: src/platforms/mp-weixin/runtime/wrapper/app-base-parser.js#L142

if (this.mpType === 'page' && typeof getApp === 'function') { // hack vue-i18n
        const app = getApp();
        if (app.$vm && app.$vm.$i18n) {
          this._i18n = app.$vm.$i18n;
        }
      }

似乎可以通过以下fix去解决,需要维护同学看下

if (this.mpType === 'page' && typeof getApp === 'function') { // hack vue-i18n
        const app = getApp()
        if (app.$vm && app.$vm.$i18n) {
          this._i18n = app.$vm.$i18n
        } else {
          this._i18n = vm.$options.i18n;
        }
}
gtlvzcf8

gtlvzcf82#

@tianchouczl 能提供下 demo 么

omjgkv6w

omjgkv6w3#

@tianchouczl 能提供下 demo 么

就最小的多语言<微信分包>例子demo就行,什么都没做,直接i18n会不生效

相关问题