【问题标题】:ERROR in bundle.js from UglifyJs Name expected来自 UglifyJs 名称的 bundle.js 中的错误预期
【发布时间】:2018-02-02 20:36:30
【问题描述】:

我正在尝试使用 UglifyJS 来最小化/压缩我的 bundle.js 文件。当我运行webpack -p 时,我得到以下信息:

ERROR in bundle.js from UglifyJs Name expected [bundle.js:105519,6]

105519行如下:

const {M, l, pattern} = __webpack_require__(862).

我正在使用带有 ES6 的 React。关于什么是错的任何想法?

【问题讨论】:

  • 我觉得我以前在 gulp-land 看到过这种情况,确保解决方案是先转译所有内容,然后对转译结果运行 uglify。

标签: javascript reactjs webpack ecmascript-6 uglifyjs


【解决方案1】:

每个版本的 Webpack 都内置了不支持 ES6 的 UglifyJS (0.4.6) 版本。此版本仅支持 ES5 语法。

有两种可能的解决方案:

  • 制作转译器目标es5
  • 不要使用uglifyjs-webpack-plugin 的内置版本,而使用npm install -D uglifyjs-webpack-plugin 安装the latest version。将其添加到配置中的 plugins 属性中:

    const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
    
    module.exports = {
      plugins: [
        new UglifyJSPlugin()
      ]
    }
    

【讨论】:

    【解决方案2】:

    肯定是 uglifyjs 版本和您尝试编译到的 javascript 目标的问题。这可能是两件事,你的 webpack 设置和你的 babel 设置导致了这个。

    如果您使用的是最新版本的webpack v3.5.5,则它附带的uglifyjs-webpack-plugin ^0.4.6 不支持es6 或更高版本的目标。

    参考当前 Webpack docs 关于UglifyjsWebpackPlugin 选项,它涵盖了如何使用uglify-js-webpack-plugin v1.0.0-beta.2 的最新测试版。但是关于如何安装那个版本还不是很清楚。

    要在 Webpack 中使用它

    yarn add uglifyjs-webpack-plugin@beta --dev

    因为你没有提到你的 Babel 设置是什么。您可能或想要使用babel-preset-env 作为您的预设。有一个option for uglifyjs

    很高兴看到 repo 或 Gist。

    【讨论】:

      【解决方案3】:

      uglifyjs-webpack-plugin 无法Uglify 特定依赖项

      时会出现此错误

      那么,如何找到产生此类错误的库?

      我正在使用 react ,所以我删除了我的应用程序中的所有表单并只保留了 1 个表单并在其中导入了所有依赖项,然后逐一删除/添加这些依赖项 并运行命令

      webpack -p
      

      所以在我的情况下是 browser-history 创建了这样的错误。现在您可以通过一些复制示例

      将此问题报告给该库的作者

      working Package.json & .babelrc

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-06
        • 2018-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-14
        • 1970-01-01
        相关资源
        最近更新 更多