首页 > 解决方案 > 打包 React 应用时如何解决“Unexpected Token Operator (>)”错误?

问题描述

我在为 React 应用程序构建可分发包时遇到了一些问题。

我正在尝试执行以下句子:

rimraf dist && env-cmd .env cross-env NODE_ENV=production webpack -p --config ./config/webpack/prod.js

并收到此错误:

ERROR in a86e50ffd4893c44fdfd.app.js from UglifyJs Unexpected token:
operator (>) [a86e50ffd4893c44fdfd.app.js:10679,43]

该跟踪中指示的行对应于作为依赖项加载的库之一,而不是我的应用程序的实际代码。这是行本身(第 10679 行对应于带有箭头函数的 const 方法的声明):

const DEFAULT_DISPLAY_LABEL_FOR_NULL_VALUES = '';
/* unused harmony export DEFAULT_DISPLAY_LABEL_FOR_NULL_VALUES */

const getAllColumnLabels = (columnLabels) => {
    const columnNames = [];
    columnLabels.forEach((value) => {
        columnNames.push(value.label);
    });
    return columnNames;
};

起初我认为它可能与 Babel 配置有关,但它与另一个正在正确构建的项目相同。我的.babelrc文件内容如下所示,使用以下方式加载babel-preset-env

{
  "presets": [
    [
      "env", {
        "modules": false,
        "targets": {
          "browsers": [
            "Chrome >= 52",
            "FireFox >= 44",
            "Safari >= 7",
            "Explorer 11",
            "last 4 Edge versions"
          ]
        },
        "useBuiltIns": true
      }
    ]
  ]
}

已经使用 Babel 的默认预设进行了一项额外的测试以排除某些可能性,尽管此测试没有取得成功。

{
  "presets": [
    [
      "env",
      {
        "modules": false
      }
    ]
  ]
} 

tsconfig.json 中的设置也可能很有趣,所以我在这里展示它们,即使它们也与上面提到的另一个项目中的相同,它构建正确:

{
  "compilerOptions": {
    "target": "es6",
    "module": "es6",
    "lib": ["dom", "es2017"],
    "moduleResolution": "node",
    "declaration": false,
    "noImplicitAny": false,
    "sourceMap": true,
    "jsx": "react",
    "noLib": false,
    "allowJs": true,
    "suppressImplicitAnyIndexErrors": true,
    "skipLibCheck": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}

我试图删除node_modules并重新安装依赖项,也在 Babelrc 的 env 中播放设置uglifyfalse但令人惊讶的是(至少,对我来说!)它没有帮助。

webpack-contrib Github站点中有一个线程被标记为已关闭,但我没有找到任何对我有帮助的东西。

有任何想法吗?我对 npm 有一些经验,但这个问题肯定阻碍了我。

谢谢!

标签: npmwebpackuglifyjs

解决方案


将 webpack 更新到版本 4(当前为 4.17)解决了这个问题。需要更新一些其他依赖项才能与 webpack 4 一起正常工作,最重要的是,Extract Text Webpack 插件目前还没有一个可以与 webpack4 一起工作的稳定版本,但是 4.0.0-beta 可以解决这个问题并且可能是直到找到更好的替代品。


推荐阅读