Как обойти ошибку «Неожиданный оператор токена (>)» при упаковке приложения React? - PullRequest
0 голосов
/ 05 сентября 2018

У меня проблемы с сборкой распространяемого пакета для приложения 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 и переустановить зависимости, также сыграл установку uglify в false в env для Babelrc, но на удивление (по крайней мере, мне!) Это не помогло.

На сайте Gitub , размещенном в веб-пакете, есть ветка , помеченная как закрытая, но я не нашел ничего, что мне помогло.

Есть идеи? У меня есть некоторый опыт работы с npm, но эта проблема, безусловно, блокирует меня.

Спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Обновление веб-пакета до версии 4 (в настоящее время 4.17) решило проблему. Для корректной работы с веб-пакетом 4 необходимо обновить еще несколько зависимостей, наиболее важно, чтобы плагин Extract Text Webpack на данный момент не имеет стабильной версии, которая работает с веб-пакетом 4, но бета-версия 4.0.0 работает вокруг этой проблемы и может используется до тех пор, пока не будет найдена лучшая замена.

...