Невозможно использовать оператор распространения после удаления create-реагировать на приложение - PullRequest
0 голосов
/ 30 августа 2018

Я использовал create-Reaction-app для создания приложения реагирования.

После запуска eject я не могу использовать оператор распространения следующим образом:

//eslint-disable-next-line 
const { children, ...attributes } = this.props; //Line 19

Он продолжает выдавать эту ошибку, когда я запускаю запуск пряжи

Строка 19: ошибка синтаксического анализа: неожиданный токен ..

Webpack Dev Server Я попытался добавить все предустановки и плагин преобразования в обе конфигурации сервера webpack dev и .babelrc, но безуспешно

// Process JS with Babel.
          {
            test: /\.(js|jsx|mjs)$/,
            include: paths.appSrc,
            loader: require.resolve('babel-loader'),    


            options: {
              presets:['react','es2015','env',"stage-2"],
              plugins: ["transform-object-rest-spread"],
              // This is a feature of `babel-loader` for webpack (not Babel itself).
              // It enables caching results in ./node_modules/.cache/babel-loader/
              // directory for faster rebuilds.
              cacheDirectory: true,
            },
          },
          // "postcss" loader app

И в файле Babel RC //.babelrc

{
    "presets":["env","react","stage-2"],
    "plugins": [
      ["transform-object-rest-spread", { "useBuiltIns": true }]
    ]
  }

Работает нормально, если я не извлеку сценарий.

1 Ответ

0 голосов
/ 30 августа 2018

Итак, проблема оказалась в том, что она Конфиг Webpack загружал его до babel

Добавление опций парсера исправило это.

{
        test: /\.(js|jsx|mjs)$/,
        enforce: 'pre',
        use: [
          {
            options: {
              formatter: eslintFormatter,
              eslintPath: require.resolve('eslint'),
              "extends": "airbnb",
              "parserOptions":{
                "ecmaFeatures": {
                  "experimentalObjectRestSpread": true
                }
              }

            },
            loader: require.resolve('eslint-loader'),
          },
        ],
        include: paths.appSrc,
      },
...