Webpack не создается из-за оператора распространения javascript

Я получаю неожиданную ошибку токена для оператора распространения, как я могу создать пакет, не удаляя код?

Вот мой файл конфигурации webpack

 Unexpected token (85:32)

  83 |   console.info(
  84 |     'return value 1 ' +
> 85 |       JSON.stringify({ value: { ...this.value(), ...newState } })
     |                                 ^
  86 |   )
  87 |   return {
  88 |     value: {

var path = require ('путь')

module.exports = {
  entry: path.resolve(__dirname, 'partner/index.js'),
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/, // Check for all js files
        loader: 'babel-loader',
        query: {
          presets: ['babel-preset-es2015'].map(require.resolve)
        },
        exclude: /node_modules/(?!other-module)/
      }
    ]
  },
  stats: {
    colors: true
  },
  devtool: 'source-map',
  resolve: { symlinks: false }
}

Однако этот веб-пакет работает, но мне нужно использовать предыдущий

module.exports = {
  entry: {
    partner: '../workout-example/partner/index.js',
    test: '../workout-example/test/example.spec.js'
  },
  target: 'web',
  mode: 'development',
  node: {
    fs: 'empty'
  },
  output: {
    filename: '[name]_bundle.js'
  }
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам следует изменить оператор распространения на Object.assign ()

Пример из Mozilla

const object1 = {
  a: 1,
  b: 2,
  c: 3
};

const object2 = Object.assign({}, object1);

console.info(object2.c);
// expected output: 3

Ваша версия JS, вероятно, не поддерживает последний синтаксис es6

Пример из вашего кода

JSON.stringify({ value: { Object.assign({}, this.value(), newState) } })

Что значит не поддерживается? На самом деле он работает с другой конфигурацией (я добавил в исходный вопрос)

Rasim Avcı 22.03.2018 09:47

Взгляните на ответ от @str

Nick Prozee 22.03.2018 09:59

Я изменил пресеты на babel-preset-es2017, но получаю сообщение об ошибке, что не могу найти модуль babel-preset-es2017

Rasim Avcı 23.03.2018 08:35

В отправляемой вами ссылке говорится, что babel-preset-es2017 устарел, поэтому я вижу, что babel советует использовать env вместо годового решения. когда я использую пресеты: ['@ babel / preset-env'] в конфигурации webpack вместо babel-preset-es2015, я получаю -> Не могу найти модуль '@ babel / preset-env'

Rasim Avcı 26.03.2018 13:02

Вы запускали: npm install babel-preset-env --save

Nick Prozee 26.03.2018 13:06

мы используем пряжу и monorepo и устанавливаем через lerna. Итак, я попробовал lerna add --dev babel-preset-env и lerna add --dev babel-preset-es2017, но получил это для них обоих -> bash: ./node_modules/.bin/lerna: такого файла или каталога нет

Rasim Avcı 26.03.2018 13:17

npm install @ babel / preset-env и укажите "presets": ["@ babel / preset-env"] в вашей конфигурации.

Nick Prozee 26.03.2018 13:21

Я установил с помощью npm install babel-preset-env --save в подпакете (мы используем monorepo) и записал пресеты: ['babel-preset-env']. Map (require.resolve) в конфигурационный файл webpack, но все равно получаю ошибку для распространения оператор

Rasim Avcı 26.03.2018 13:21

так в чем разница между @ babel / preset-env и babel-preset-env? Я сделал это, установил @ babel / preset-env и написал @ babel / preset-env в конфигурации webpack, но на этот раз получил другую ошибку -> Ошибка сборки модуля: Ошибка: не удается найти модуль '@ babel / core'

Rasim Avcı 26.03.2018 13:22

используйте @ babel / preset-env в качестве имени пакета вместо babel-preset-env

Nick Prozee 26.03.2018 13:23

Это стабильная версия

Nick Prozee 26.03.2018 13:23

Да, я пробовал использовать @ babel / preset-env в конфигурации webpack, как писал, но получил ошибку модуля, а не foud. Это дает ту же ошибку даже после того, как я попробовал → npm install --save-dev babel-core

Rasim Avcı 26.03.2018 13:26

Вот документ о том, как перейти с es2015 на babel-env: babeljs.io/env

Nick Prozee 26.03.2018 13:33

Спасибо, но я уже прочитал эту страницу сегодня, и на этой странице нет ничего особенного, мои файлы babelrc уже являются env, и я не нацелен на определенные версии браузера.

Rasim Avcı 26.03.2018 13:37

Свойства объекта Rest / Spread еще не является функцией ECMAScript (но будет очень скоро).

Для его использования необходимо добавить соответствующий Плагин Babel.

Я думаю, что это должен быть принятый ответ, поскольку мой ответ требует, чтобы вы изменили любой код

Nick Prozee 22.03.2018 10:17

Другие вопросы по теме