我曾经遇到过UglifyJS for Webpack和ES6模块的问题:
来自UglifyJs的static / js / vendor.6ccd9e38979a78765c7a.js中的错误 意外的令牌:名称(功能) [./node_modules/pica/lib/mathlib.js:19,0][static/js/vendor.6ccd9e38979a78765c7a.js:39003,6]
我读到Webpack插件的新测试版支持ES6:
https://github.com/webpack-contrib/uglifyjs-webpack-plugin
new webpack.optimize.UglifyJsPlugin({
uglifyOptions: {
ie8: false,
ecma: 8, // I also tried 7 and 6
parse: {},
mangle: {
properties: {
// mangle property options
}
},
output: {
comments: false,
beautify: false
},
compress: {},
warnings: true
}
}),
然而,现在我又收到了另一个错误:
来自UglifyJs的static / js / vendor.6ccd9e38979a78765c7a.js中的错误 意外的令牌:名称(功能) [静态/ JS / vendor.6ccd9e38979a78765c7a.js:39003,6]
可能是什么问题?
答案 0 :(得分:7)
您可以尝试安装babel-preset-env
并将presets": [ "env" ]
添加到您的webpack.config.js或babelrc
。
Uglify无法自行解析ES6(据我所知),因此您需要将代码转换为ES5,使用babel对生成的JS进行后处理,或使用其他缩小器。我的建议是Babelify,我在与Uglify一起出现错误后切换到了这里。
编辑:问题可能在您的new webpack.optimize.UglifyJsPlugin
声明中,使用此声明与Webpack 3+存在问题。您需要导入uglifyjs-webpack-plugin
并将插件声明更改为new UglifyJSPlugin
(示例)。这是一个reference。
示例:
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
const config = {
...
plugins: [
new UglifyJSPlugin({ uglifyOptions: { ...options } })
]
}