webpack

webpack打包js代码

2022-04-21  本文已影响0人  前端mh

场景:

有时候需要将es6语法转化成es5语法,便于低版本浏览器兼容。

安装:

npm install babel-loader @babel/core @babel/preset-env -D

解释babel-loader ==> 在webpack中应用babel解析es6的桥梁
@babel/core ==> babel的核心模块
@bable/preset-env ==> 一组babel插件的集合

使用:

在module.rules中使用

{
        test:/\.js$/,
        exclude:/node_modules/,  //不解析node_modules中的js
        use:{
          loader:'babel-loader',
          options:{
            presets:["@babel/preset-env"],
          }
        }
      }

报错:

此时执行 npx webpack命令编译 执行npx webpack-dev-server启动服务,在后台会报错:regeneratorRuntime is not defined。

原因:

regeneratorRuntime是webpack打包生成的全局辅助函数,由babel生成,用于兼容async/await的语法。regeneratorRuntime is not defined这个错误显然是未能正确配置babel。

解决:

添加以下插件及配置:

# 这个包中包含了regeneratorRuntime,运行时需要
npm install --save @babel/runtime

# 这个插件会在需要regeneratorRuntime的地方自动require导包,编译时需要
npm install --save-dev @babel/plugin-transform-runtime

接着改一下babel的配置文件

{
        test:/\.js$/,
        exclude:/node_modules/,  //不解析node_modules中的js
        use:{
          loader:'babel-loader',
          options:{
            presets:["@babel/preset-env"],
            plugins:[
              ['@babel/plugin-transform-runtime']
            ]
          }
        }
    }

上一篇 下一篇

猜你喜欢

热点阅读