小程序基础库 2.17.3 及以后版本出现了引用部分第三方包后引发了 ReferenceError: regeneratorRuntime is not defined 的报错。
但是在 2.17.3 之前的版本不会出现这个问题。
目前还发现,如果在同一个文件中加入任意的async语句,也会解决这个报错问题,所以很奇怪。
开发环境如下:
小程序基础库版本:2.17.3 小程序开发者工具版本:1.05.2106300
代码片段如下:
// app.js
import MPServerless from '@alicloud/mpserverless-sdk'; // 引用就会报错
App({
onLaunch() {
// 展示本地存储能力
const logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
}
})
},
globalData: {
userInfo: null
},
// async menubar(){} 在该文件加入任意async语句,就不会报错。所以很奇怪。
})
项目配置文件如下:
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": false,
"es6": true,
"enhance": true,
"postcss": true,
"preloadBackgroundData": false,
"minified": true,
"newFeature": false,
"coverView": true,
"nodeModules": false,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"lazyloadPlaceholderEnable": false,
"useMultiFrameRuntime": true,
"useApiHook": true,
"useApiHostProcess": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"enableEngineNative": false,
"useIsolateContext": true,
"userConfirmedBundleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true,
"showES6CompileOption": false
},
"compileType": "miniprogram",
"libVersion": "2.18.0",
"appid": "wx11a63104dee2c255",
"projectname": "miniprogram-2",
"debugOptions": {
"hidedInDevtools": []
},
"scripts": {},
"staticServerOptions": {
"baseURL": "",
"servePath": ""
},
"isGameTourist": false,
"condition": {
"search": {
"list": []
},
"conversation": {
"list": []
},
"game": {
"list": []
},
"plugin": {
"list": []
},
"gamePlugin": {
"list": []
},
"miniprogram": {
"list": []
}
}
}
基础库在过去的版本中,把自身带的regeneratorRuntime暴露在全局空间中,这个bug在新版本中修复了。
如果第三方库或者代码中使用到它,需要自行引入。
工具在使用增强编译功能去编译 async 语法时,会在该文件中引入regeneratorRuntime。
但是奇怪的是,这个问题在线下通过minprogram-ci 发preview或者通过小程序开发者工具预览都会出现,但是线上环境没有问题(通过ci.upload进行构建上传的),而且我们的用户机型肯定覆盖了你说的升级后的基础库版本,按理说线上也会报bug?
截图看下 project.config.json 的项目配置呢?
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": false,
"es6": true,
"enhance": true,
"postcss": true,
"preloadBackgroundData": false,
"minified": true,
"newFeature": false,
"coverView": true,
"nodeModules": false,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"list": []
这个问题在 2.10.4 及以前的基础库版本下也会出现,2.11.0 至2.17.0 版本是正常不报错的