Javascript 网页包';s UglifyJsPlugin对包含let的节点模块抛出错误

Javascript 网页包';s UglifyJsPlugin对包含let的节点模块抛出错误,javascript,node.js,webpack,vue.js,uglifyjs2,Javascript,Node.js,Webpack,Vue.js,Uglifyjs2,这是相关代码(我使用的是Vue.js的官方模板): .babelrc: "presets": [ "babel-preset-es2015", "babel-preset-stage-2", ] webpack.prod.config.js new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, drop_console: shouldDropConsole }, sourceMa

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

.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运行build
时遇到的错误:

UglifyJs中的static/js/vendor.a6271913414e87e123c2.js错误 意外令牌:名称(_个月) [./node_modules/calendar js/index.js:56,0][static/js/vendor.a6271913414e87e123c2.js:90602,6]

这是一条令人不快的线:

let _months = MONTHS;
(如果我将所有的
let
替换为
var
s,则项目的构建不会出现问题。
const
似乎不会影响Webpack/UglifyJS。)


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

这可能是因为您使用的是不支持es6语法的较旧版本的
节点

let
const
、箭头函数等都是es6语法的一部分。要了解更多信息,请点击此链接

其他项目可能需要较旧版本的
节点
,因此请安装nvm。NVM是一个节点版本管理器,它将帮助您轻松地在节点版本之间切换。按照文档和安装过程的链接进行操作

NodeV6+支持ES6语法,请尝试升级到该语法

更新

在这个答案的评论中,我们确认这不是一个版本问题,并且通过遵循这个GitHub问题线程得到了解决


和平

确保Babel插件在Uglify之前执行。@skyboyer您能说明如何在网页包项目中执行该操作吗?对不起,我错了:它应该是
Babel loader
而不是
Babel插件
。请看我使用的是v8.5.0.hi@alex尝试使用新的独立UglifyJS插件查看此线程修复了此问题。。。也许你可以更新你的答案?