UglifyJS webpack插件抛出:意外的令牌:名称(功能)

时间:2017-10-24 02:51:23

标签: javascript webpack ecmascript-6 uglifyjs uglifyjs2

我曾经遇到过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]

可能是什么问题?

1 个答案:

答案 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 } })
      ]
    }