【问题标题】:Webpack's UglifyJsPlugin throws error with Node modules containing letWebpack UglifyJsPlugin 抛出包含 let 的 Node_modules 错误
【发布时间】:2018-06-02 15:38:03
【问题描述】:

这是相关代码(我用的是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 替换为 vars,则项目构建没有问题。const 似乎不会打扰 Webpack/UglifyJS。)

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

【问题讨论】:

  • 确保在 Uglify 之前执行 Babel 插件。
  • @skyboyer 你能说明如何在 Webpack 项目中做到这一点吗?
  • 对不起,我错了:应该是 babel-loader 而不是 babel-plugin。见stackoverflow.com/a/45222198/2071697

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


【解决方案1】:

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

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

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

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

更新

在此答案的 cmets 上,已确认这不是版本问题,并通过关注此 GitHub 问题线程 https://github.com/joeeames/WebpackFundamentalsCourse/issues/3 得到解决。

和平!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2018-03-02
  • 2019-03-29
  • 2018-07-07
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多