收藏
回答

TypeError: Function("r","regeneratorRuntime = r")?

开发版,体验版真机报错,8.0.16和8.0.17微信都不能,旧版微信就没问题

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

1 个回答

  • brave
    brave
    2022-01-17

    该问题通常是正确引入了 regeneratorRuntime,但是误将 regeneratorRuntime 编译至了严格模式(即含有 'use strict' )。

    regeneratorRuntime 由于会尝试通过不使用 var 关键字直接赋值的方式,来声明全局 regeneratorRuntime 变量。这种方式在严格模式下会报错,因而尝试使用 new Function 的形式从严格模式跳入非严格模式,再次进行全局变量声明。然而小程序环境下不允许使用 new Function,因而初始化失败。

    该问题通常是由于重复打包/编译导致的,即第一次编译时将 regeneratorRuntime 识别为非严格模式,而第二次编译时由于失去原始信息,识别为严格模式。

    需要排查打包路径是否重复经过了 babel 或 webpack 等编译或打包。若使用第三方框架已经进行了 babel 编译;或者自行使用了babel编译,则需要关闭开发者工具的【将 JS 编译成 ES5】编译选项和 miniprogram-ci 的 es7: true (增强编译)选项。

    2022-01-17
    有用 2
    回复
登录 后发表内容