Webpack 编译出错,提示 Unexpected token: keyword «const»

540 阅读1分钟

报错提示:

static/js/chunk-libs.631ee8c5.js from UglifyJs
Unexpected token: keyword «const» [static/js/chunk-libs.631ee8c5.js:84,0]

原因:

问题原因: 1,是UglifyJS不支持ES6的语法。 2,发现uglifyjs-webpack-plugin 2.0版本的Release日志中,明确提示重新切换回到uglify-js,因为uglify-es被废弃了,如果需要ES6代码压缩,请使用terser-webpack-plugin

解决方案:

使用 terser-webpack-plugin 替换 uglifyjs-webpack-plugin 进行代码压缩。

npm install terser-webpack-plugin --save

修改配置 vue.config.js

const TerserPlugin = require('terser-webpack-plugin')

config.optimization.minimizer([
        // 使用 TerserPlugin
        new TerserPlugin({
          terserOptions: {
            mangle: true, // 混淆,默认也是开的,mangle也是可以配置很多选项的,具体看后面的链接
            compress: {
              drop_console: true, // 传true就是干掉所有的console.*这些函数的调用.
              drop_debugger: true, // 干掉那些debugger;
              pure_funcs: ['console.log'] // 如果你要干掉特定的函数比如console.info ,又想删掉后保留其参数中的副作用,那用pure_funcs来处理
            }
          }
        })
        // 注释 UglifyjsWebpackPlugin 代码
        // new UglifyjsWebpackPlugin({
        //   // 生产环境推荐关闭 sourcemap 防止源码泄漏
        //   // 服务端通过前端发送的行列,根据 sourcemap 转为源文件位置
        //   // sourceMap: false,
        //   uglifyOptions: {
        //     warnings: false,
        //     compress: {
        //       drop_console: true,
        //       drop_debugger: true
        //     }
        //   }
        // })
      ])

terser-webpack-plugin 详情