Webpack 的 UglifyJsPlugin 对包含 let 的节点模块抛出错误

Webpack's UglifyJsPlugin throws error with Node modules containing let

这是相关代码(我用的是Vue.js'Webpack官方模板):

.babelrc:

"presets": [
  "babel-preset-es2015",
  "babel-preset-stage-2",
]

webpack.prod.config.js

new webpack.optimize.UglifyJsPlugin({
  compress: {
    warnings: false,
    drop_console: shouldDropConsole
  },
  sourceMap: true
}),

这是我在 npm run build:

时得到的错误

ERROR in static/js/vendor.a6271913414e87e123c2.js from UglifyJs Unexpected token: name (_months) [./node_modules/calendar-js/index.js:56,0][static/js/vendor.a6271913414e87e123c2.js:90602,6]

这是违规行:

let _months = MONTHS;

(如果我将所有 let 替换为 var,则项目构建没有问题。const 似乎不会打扰 Webpack/UglifyJS.)

我是否需要配置一些东西以便 Webpack/UglifyJS 构建包含 let 的节点模块? (我的实际项目中的 let 不会给我带来问题。)

这可能是因为您使用的 node 旧版本不支持 es6 语法。

letconst、箭头函数等是 es6 语法的一部分。要了解更多信息,请关注此 link http://es6-features.org/

您的其他项目可能需要旧版本的 node,因此请安装 nvm。 NVM 是一个节点版本管理器,可以帮助您轻松地在节点版本之间切换。按照 link 获取文档和安装过程 https://github.com/creationix/nvm

Node v6+ 支持 ES6 语法尝试升级到那个。

更新

根据此答案的评论,已确认这不是版本问题,并已通过关注此 GitHub 问题线程 https://github.com/joeeames/WebpackFundamentalsCourse/issues/3.

得到解决

和平!