Webpack的UglifyJsPlugin在包含let的Node模块中抛出错误

时间:2017-12-20 06:21:37

标签: javascript node.js webpack vue.js uglifyjs2

这是相关代码(我使用的是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时遇到的错误:

  

来自UglifyJs的static / js / vendor.a6271913414e87e123c2.js中的错误   意外的令牌:名称(_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不会给我带来麻烦。)

1 个答案:

答案 0 :(得分:1)

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

nodelet,箭头函数等是es6语法的一部分。要了解更多信息,请点击此链接http://es6-features.org/

您可能需要为其他项目使用旧版const,因此请安装nvm。 NVM是一个节点版本管理器,可以帮助您轻松切换节点版本。请按照文档和安装过程https://github.com/creationix/nvm

的链接进行操作

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

<强>更新

在这个答案的评论中,确认它不是版本问题,并通过遵循此GitHub问题线程https://github.com/joeeames/WebpackFundamentalsCourse/issues/3得到解决。

和平!