收藏
回答

Vue.extend挂载动态templete,报render.call is not.. 怎么解决?

web环境没问题,小程序环境kbone执行以下代码时会报render.call is not a function的异常,请问原因是啥,怎么解决呢?

回答关注问题邀请回答
收藏

1 个回答

  • 立秋
    立秋
    2020-08-20

    找到原因了,解析template生成render函数的时候用到了new Function(),但是小程序不支持这个方法(https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/js-support.html),所以没有正常的生成render函数,而是生成了个对象。

    小程序:

    浏览器:

    问题来了.......

    怎么解决呢

    2020-08-20
    有用
    回复 3
    • 微信小店技术专员-binnie
      微信小店技术专员-binnie
      2020-08-20
      受限于小程序环境,无法支持 new Function()
      2020-08-20
      回复
    • 立秋
      立秋
      2020-08-20回复微信小店技术专员-binnie
      有什么方式可以规避吗?还是Vue.compile和vue.extend动态解析template在小程序环境就是无解的....
      2020-08-20
      回复
    • 立秋
      立秋
      2020-08-22回复立秋
      同步一下处理结果:
      vue.compile没办法,在小程序客户端编译template无解。
      我们的处理方案是改为在构建时编译。
      (1)Vue文件直接通过vue-loader编译就可以了(2)其他格式文件自定义loader通过vue-template-compiler编译
      最后vue.extend执行时用编译生成的render函数代替template
      2020-08-22
      回复
登录 后发表内容
问题标签