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

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

问题描述
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

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

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

  1. if (this.mpType === 'page' && typeof getApp === 'function') { // hack vue-i18n
  2. const app = getApp()
  3. if (app.$vm && app.$vm.$i18n) {
  4. this._i18n = app.$vm.$i18n
  5. } else {
  6. this._i18n = vm.$options.i18n;
  7. }
  8. }
ql3eal8s

ql3eal8s1#

@fxy060608@Yaob1990

gtlvzcf8

gtlvzcf82#

@tianchouczl 能提供下 demo 么

omjgkv6w

omjgkv6w3#

@tianchouczl 能提供下 demo 么

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

相关问题