vue打包报错:
查到几种可能原因,一一排除
- @click 调用方法传参多了个逗号
仔细检查了,确认没有写多逗号 - 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还是报错
- 依赖包使用了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解析一下即可。