关于小程序使用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) {...语句删除,此时重新编译报错就消失了。

        至此问题得以解决。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM