打包遇到的问题
这次项目发布生产遇到打包一直报错:
static/js/chunk-libs.771fb7cb.js from UglifyJs
Unexpected token: punc «,» [static/js/chunk-libs.771fb7cb.js:121736,14]
可在打包dev和uat却遇不到这个问题,度娘说的大都是:
在 UglifyJs 的 github issues #78 找到了这样一个解决方案:由于 UglifyJs 只支持 ES5 而 element-ui 可能引入了一部分 ES6 的写法,所以导致 webpack 打包失败,不过我的是移动端并没有 element-ui 的引入所以并不是一样的问题,
但是我推测问题也是出现UglifyJs 只支持 ES5 ,可错误提示并没有指出问题在哪里出现的,一度忙头苍蝇似的想要把这个版本用到的组件都用babel转换,结果都不行
后来还是要重代码层面分析,生产和uat的打包环境配置区别上来下手,后来发现
configureWebpack: config => {
// 移除console debugger
if (productionClear && isProd) {
config.plugins.push(
new UglifyJsPlugin({
uglifyOptions: {
compress: {
drop_console: true, // 删除console.*
pure_funcs: ['console.log'] // 删除console.log
}
}
})
)
}
}
}
},
在webpack的configureWebpack配置里面有用isProd判断是否生产的打包,生产打包就 new UglifyJsPlugin处理console的删除,而报错也是UglifyJs的报错注释后打包正常
注意的是本地打包不会出现这个问题,估计也是和打包环境有关系的