关于小程序使用async/await报错regeneratorRuntime is not defined的解决方案

        小程序在请求后端接口时,使用了ES6语法,虽然我们可以通过微信开发者工具中的详情--本地设置--ES6转ES5,将ES6转ES5不开启,这样可以解决这个报错。但是并不是最理想的解决办法,为了兼容大多较低版本的设备,ES6转ES5还是很有必要的。

从报错上来看是少了 regenerator-runtime 库,所以可以这样解决:

            从node_modules中找到regenerator-runtime文件夹,进入复制runtime.js文件(我是直接从以往做的Vue项目中直接复制runtime.js拿来用,没有的可以自行npm install regenerator然后找到文件)到小程序的自定义文件夹如utils,在使用async/await的页面中引入,如import regeneratorRuntime form '../../utils/runtime.js';

       此时重新编译会发现控制台报错:Function(...) is not a function,这是因为regenerator-runtime文件被修改了,加了一个 Function函数导致小程序运行报错,此时需要进行以下操作:

            1.将var regeneratorRuntime = (function (exports) {"use strict";... 中的regeneratorRuntime改为runtime;

       2.将文件最后一个try {regeneratorRuntime = runtime;} catch (accidentalStrictMode) {...语句删除,此时重新编译报错就消失了。

        至此问题得以解决。

原文地址:https://www.cnblogs.com/zishang91/p/15589166.html