regeneratorRuntime is not defined

  • 解决打包es7转码问题
    诱因:因为使用gulp gulp-babel 来打包压缩代码,使用es7的async/await后发现某些文件未成功打包
    方法:将"es2015"改成babel-preset-env
        stream = stream.pipe(babel({
                babelrc: false,
                // presets: [[ "es2015", { modules: false } ]],  // 这个写法仅支持到es6
                presets: [[ "babel-preset-env", { modules: false } ]],  // 改成babel-preset-env 后支持es7
                plugins: []
            })).pipe(uglify({
                compress:{
                    drop_console:true,
                    unused:true,
                    dead_code:true
                }
         }));
  • 打包部署后报错: “regeneratorRuntime is not defined”

    gulp-babel 将async/await打包成以下内容及报错:
    regeneratorRuntime is not defined_第1张图片
    image.png
image.png
  • 百度regeneratorRuntime
    通常的解决方法是安装'transform-runtime' ,但是这个插件是运行在node服务器上,即使你装了,浏览器照样不认识
    所以你需要的是在gulp-babel给你编译的时候,把regeneratorRuntime再转换一次,这就用到了babel的babel-polyfill
    npm i babel-polyfill -d

安装后,找到node_module/babel-polyfill/dist/polyfill.min.js这个文件,引入到页面的head中,这样你再一次打包的时候,_asyncToGenerator 这个东西就会返回一个函数了,函数浏览器是认识的,再运行一下项目就没问题了

  • 参考内容:
    https://blog.csdn.net/qq_40028324/article/details/81235290
    侵权立删

你可能感兴趣的:(regeneratorRuntime is not defined)