regeneratorRuntime is not defined
Can't find variable: regeneratorRuntime
该问题是由于 babel 编译时未能正确注入 regeneratorRuntime 导致的。
babel 会将高版本js语法,转换为低版本兼容的语法。regeneratorRuntime 是 babel 在对 js 中 async/await 语法进行转换时,会使用的 runtime 依赖。开发者工具的【将 JS 编译成 ES5】即是使用 babel 进行编译。
可以先尝试更新开发者工具和 miniprogram-ci 到最新版后,开启开发者工具的【将 JS 编译成 ES5】编译选项。miniprogram-ci 需要开启 es7: true (增强编译)选项。注意若使用第三方框架已经进行了 babel 编译;或者自行使用了 babel 编译,则不需要开启工具和 miniprogram-ci 的编译选项。
若使用了第三方框架,或者自行配置的 babel 配置,则需要检查是否正确注入 regeneratorRuntime。常见的解决方案是为 babel 配置添加插件 @babel/plugin-transform-runtime。
Function("r", "regeneratorRuntime = r") is not a function
该问题通常是正确引入了 regeneratorRuntime,但是误将 regeneratorRuntime 编译至了严格模式(即含有 'use strict' )。
regeneratorRuntime 由于会尝试通过不使用 var 关键字直接赋值的方式,来声明全局 regeneratorRuntime 变量。这种方式在严格模式下会报错,因而尝试使用 new Function 的形式从严格模式跳入非严格模式,再次进行全局变量声明。然而小程序环境下不允许使用 new Function,因而初始化失败。
该问题通常是由于重复打包/编译导致的,即第一次编译时将 regeneratorRuntime 识别为非严格模式,而第二次编译时由于失去原始信息,识别为严格模式。
需要排查打包路径是否重复经过了 babel 或 webpack 等编译或打包。若使用第三方框架已经进行了 babel 编译;或者自行使用了babel编译,则需要关闭开发者工具的【将 JS 编译成 ES5】编译选项和 miniprogram-ci 的 es7: true (增强编译)选项。
我的小程序并没有使用 async/await 语法,但也报错
如果你的小程序引入了插件,而有插件没有正确配置编译模式,同样会出现上述问题。建议排查是否是插件导致。如果确认是插件导致,则需要插件提供方参考本指引解决问题。
另外的,npm 模块、第三方框架等同样可能引入 regeneratorRuntime 依赖。
我的小程序在正式版没有以上问题,但开发者工具/开发版预览/体验版会有上面的报错
该问题是由于基础库 bug,在 2.21.3 版本之前误将 regeneratorRuntime 暴露到了全局,因而导致小程序即使没有正确注入 regeneratorRuntime,但也能够正常运行。
基础库 2.21.3 版本已将 regeneratorRuntime 从工具、开发版、预览版小程序&小游戏上移除,因此会看到报错。你可以参照上面的排查指引进行排查直至解决问题。
基础库暂时没有移除正式版小程序的 regeneratorRuntime,因此你不用担心线上正式版小程序,也可以不用紧急修复该问题。
我的小程序只在某些低版本微信上出现上面的报错
低版本的基础库如 2.10.4 还没有误将 regeneratorRuntime 暴露到全局,因此只会在低版本出现该问题。
建议参照上面的排查指引进行排查直至修复解决问题。
使用 HBuilder 编译只需要添加 "es7": true 即可,配置如下:
/* @file manifest.json */ { "mp-weixin" : { "appid": "", "setting" : { "urlCheck" : false, "es6" : true, "es7" : true, "postcss" : true }, "usingComponents" : true, "uniStatistics" : { "enable" : true } }, }
请问,后期我们如何处理这个问题
你们能干点正事吗。开发者的时间也是时间,不要老是让我们在这些问题上浪费时间。
regeneratorRuntime is not defined
Can't find variable: regeneratorRuntime
还是报这个错误,能提供一种排查方法吗?
删除小程序,再重新打开就行了
这个问题怎么在最新版本还有? 震惊
官方 解决一下这个问题:https://developers.weixin.qq.com/community/develop/doc/000ec2d22286204eb7fd7a53056800?highLine=ci
最新开发者工具怎么开启增强编译