7

我曾经在使用 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 插件的新 beta 版本支持 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 中的错误意外令牌:名称(功能)[static/js/vendor.6ccd9e38979a78765c7a.js:39003,6]

可能是什么问题呢?

4

1 回答 1

15

您可以尝试安装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(示例)。这是一个参考

例子:

const UglifyJSPlugin = require('uglifyjs-webpack-plugin')

    const config = {
      ...
      plugins: [
        new UglifyJSPlugin({ uglifyOptions: { ...options } })
      ]
    }
于 2017-10-24T11:09:02.723 回答