- 解决打包es7转码问题
诱因:因为使用gulp gulp-babel 来打包压缩代码,使用es8的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打包成以下内容及报错: 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 这个东西就会返回一个函数了,函数浏览器是认识的,再运行一下项目就没问题了
网友评论