UglifyJs Unexpected token: punc (,)

vue打包报错:
UglifyJs Unexpected token: punc (,)_第1张图片
查到几种可能原因,一一排除

  1. @click 调用方法传参多了个逗号
    仔细检查了,确认没有写多逗号
  2. uglifyjs-webpack-plugin代替webpack.optimize.UglifyJsPlugin
yarn uglifyjs-webpack-plugin --save-dev
  new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      },
      sourceMap: config.build.productionSourceMap,
      parallel: true
    }),

替换成:

const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
...
   new UglifyJsPlugin({
      "uglifyOptions":
          {
            compress: {
              warnings: false,
              drop_debugger: true, 
              drop_console: true 
            }
          },
          sourceMap: config.build.productionSourceMap,
          parallel: true
    }),

重新build还是报错

  1. 依赖包使用了es6,但是未经过babel-loader解析
    用sourceMap:”source-map“模式看一下具体报错的文件:
    在这里插入图片描述
{
        test: /\.mjs$/,
        loader: 'babel-loader',
        include: [resolve('node_modules/@vant/popperjs/dist/index.esm.mjs')]
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test'), resolve('node_modules/js/static'), resolve('node_modules/mint-ui/node_modules/vue-lazyload')]
      },

这时候再重新build发现竟然可以了!
再把第二步的修改还原看一下,build也没有报错。
所以可以确定问题出在依赖包中使用了es6,将相关包用babel-loader解析一下即可。

你可能感兴趣的:(vue.js,webpack)