来自UglifyJs的意外令牌:operator(>)

时间:2017-05-10 09:26:04

标签: webpack vuejs2 vue-loader babel-loader

我有2个Vue-Cli webpack项目(ClientApp和Lib)。 Lib是我的组件库(与其他项目共享)

问题

当我构建项目ClientApp npm run build时,出现以下错误:

ERROR in static/js/app.d08a24ce0e8d0438ce68.js from UglifyJs
Unexpected token: operator (>) [C:/.../Lib/src/tools/escape-key.js:3,0][static/js/app.d08a24ce0e8d0438ce68.js:17468,38]

问题

似乎错误来自文件escape-key.js中的箭头功能。 这是ES6语法,UglifyJS无法解析此问题。 在Uglify之前,Babel不应该先行吗? 请注意,这适用于*.vue个文件。

项目结构

ClientApp
   | - build
   | - config
   | - src
       | - App.Vue // import EscapeKey from '~lib/tools/escape-key';



Lib
  | -src
     | - tools
         | - escape-key.js

ClientApp&#webpack.base.conf.js文件

注意Lib有一个别名。

resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      '@': resolve('src'),
      '~lib': path.join(__dirname, '../../lib/src'),
    }
  },

如果需要,请随时询问更多详细信息。

4 个答案:

答案 0 :(得分:6)

添加

for KEY in "${!arr_list_people_name[@]}"; do
  # Print the KEY value
  echo "Key: $KEY"
  # Print the VALUE attached to that KEY
  echo "Value: ${arr_list_people_name[$KEY]}"
done

到您的dev依赖项并更新您的"uglifyjs-webpack-plugin": "v1.0.0-beta.1", 文件以明确使用此版本:

webpack.config.js

uglifyjs-webpack-plugin最新稳定版(v0.4.6)使用能够转换ES6的旧版const UglifyJSPlugin = require('uglifyjs-webpack-plugin') module.exports = { plugins: [ new UglifyJSPlugin() ] } 而不是uglify-js。此依赖关系已在1.0.0-beta.1版本中更新。

https://github.com/webpack-contrib/uglifyjs-webpack-plugin/releases/tag/v1.0.0-beta.1

答案 1 :(得分:5)

这解决了我的问题。 我安装了uglifyjs-webpack-plugin

npm install uglifyjs-webpack-plugin --save-dev

然后将其添加到我的webpack.config

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

module.exports = {
  plugins: [
    new UglifyJSPlugin()
  ]
}

答案 2 :(得分:3)

您正在使用的uglify版本可能不支持ES6。

https://github.com/mishoo/UglifyJS2/tree/harmony是截至目前的es6版本

如果您想使用webpack plugin,请务必注意有关es6的安装部分

  

重要!该插件与uglify-js具有对等依赖关系,因此为了使用该插件,还必须安装uglify-js。该   目前(2017/1/25)可用uglify-js npm包;但是,做   不支持缩小ES6代码。为了支持ES6,一个   必须提供具有ES6能力,a.k.a。和谐版本的UglifyJS。

     

如果您的缩小目标是ES6:

     

yarn add git://github.com/mishoo/UglifyJS2#harmony-v2.8.22 --dev

答案 3 :(得分:2)

更改我的babel-loader配置后,它有效。

Babel-loader config

{
  test: /\.js$/,
  loader: 'babel-loader',
  include: [path.join(__dirname, '../../Lib/src'), resolve('src'), resolve('test')]
}