es6支持错误regeneratorRuntime is not defined
发布于 5 年前 作者 junluo 16324 次浏览 来自 问答

Promise现在可以使用了,但是yield 关键字被转码后,是这样的:

 var t1 = regeneratorRuntime.mark(function t1() {

            var l;

            return regeneratorRuntime.wrap(function t1$(_context) {

                while (1) {

                    switch (_context.prev = _context.next) {

                        case 0:

                            _context.next = 2;

                            return t;

                        case 2:

                            l = _context.sent;

                            console.log(l);

                        case 4:

                        case ‘end’:

                            return _context.stop();

                    }

                }

            }, t1, this);

        });

代码执行报错:

WAService.js:3 thirdScriptError

regeneratorRuntime is not defined;at “pages/index/index” page lifeCycleMethod onLoad function

ReferenceError: regeneratorRuntime is not defined

开发工具和手机上都这样

2 回复

已解决!


小程序开发中由于 es6 至少 ios 9.1 不支持,所以如果已经在项目中使用了较多了es6或必须使用es6,则需要勾选 es6 转 es5,才能解决前述兼容问题。但若有使用 async await 会报 regeneratorRuntime is not defined 错误。解决方法如下:


  1. 下载 facebook 的 regenerator 库

  2. 取 regenerator-master/packages/regenerator-runtime 目录中的 runtime.js 文件放入你的项目中

  3. 在你有使用 async await 的文件前面引入这个 runtime.js 文件即可,引入代码如: const regeneratorRuntime = require('../../utils/runtime.js');


就这样,解决了!

在项目里面选择不要转es5就可以了

回到顶部