Настройка Babel на ES7

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

Но есть проблема.

class Example {

   change = async (params) => {

       const job = await Some.job();
   }
}

Каждый раз, когда я хотел отладить, у меня возникала неожиданная проблема с токеном. Даже если я запустил его с помощью Babel, он потерпит неудачу. Я знаю проект, в котором люди используют такой синтаксис, и он работает. Я не мог найти правильного решения в Интернете, пару проблем с github, но ничего надежного, поэтому спрашиваю здесь. В чем проблема? Как мне настроить Babel или проект? Ниже ошибка из консоли и мои скриншоты конфигурационного файла.

ошибка из консоли

build config package.json

зависимости

eslint confg


person msharpp    schedule 08.06.2017    source источник
comment
Ну, _1 _ / _ 2_ нет в ES7.   -  person Bergi    schedule 08.06.2017
comment
Вы еще не показали свои пресеты babel?   -  person Bergi    schedule 08.06.2017
comment
Пожалуйста, разместите код и настройки как текст, а не как картины.   -  person Bergi    schedule 08.06.2017
comment
Возможный дубликат Установка Babel V6.x ES7 Async / Await на Node.js v6.2.0 с Nodemon   -  person Michał Perłakowski    schedule 08.06.2017
comment
@Bergi Ты умеешь тупить?   -  person Michał Perłakowski    schedule 08.06.2017
comment
Да, позже я решил проблему так же, как @ MichałPerłakowski, представленный в повторяющемся комментарии. Мне нужно было установить предварительные настройки этапа 0 и плагины преобразования, чтобы убедиться, что поддерживаются асинхронные операции. Это не очень хорошо документировано, вы выполняете настройку, но на Babel.js очень много конфигураций. Он в основном дает вам все параметры в неупорядоченном виде и надеется, что вы поймете, как настроить свой проект. И вся эта штука с предустановками - плагинами должна быть более понятной. Спасибо за комментарии.   -  person msharpp    schedule 08.06.2017
comment
Чтобы расширить его немного больше: здесь вы используете две функции, которые не являются частью ES7: асинхронные функции и поля общедоступных классов. Асинхронные функции будут частью выпуска этого года (ES2017), а поля общедоступных классов все еще остаются предложением (на данный момент этап 2). Итак, вы уже начинаете с неправильного вопроса. Если вам просто нужна поддержка ES7, все, что вам нужно, это предустановка ES2016. Если вам нужны асинхронные функции, вам понадобится предустановка ES2017. Если вам нужны поля общедоступного класса, вам понадобится предварительная установка этапа 2.   -  person Felix Kling    schedule 09.06.2017
comment
Возможный дубликат Transpile Async Ожидайте предложения с Babel.js?   -  person Felix Kling    schedule 09.06.2017
comment
Также дубликат Как использовать стрелку ES6 в методах класса?   -  person Felix Kling    schedule 09.06.2017
comment
@FelixKling Спасибо за информацию, это может быть дубликат, но, как я уже сказал, сначала я не мог понять babel, теперь я медленно понимаю, что к чему. Их документация не ясна.   -  person msharpp    schedule 10.06.2017


Ответы (1)


Просто посмотрите эту ссылку. Установка Babel V6.x ES7 Async / Ожидание на Node.js v6.2.0 с Nodemon (вы также можете проверить это, если хотите установить плагин: https://babeljs.io/docs/plugins/transform-async-to-generator/)

Или выполните поиск в Google "babel async await support" и посмотрите результаты.

Babel не предлагает вам все, что поддерживается из коробки, вам нужно сделать некоторые конфигурации, установить пресеты / плагины и т. Д.

В моей ситуации мне нужно было установить предустановки этапа 0 и / или плагины преобразования, чтобы убедиться, что поддерживаются ключевые слова async. В приведенной выше ссылке указано этап 3, но вы также можете установить этап 0, он включает все плагины до stage-3.

Babel нужно задокументировать намного лучше, вы не можете просто добраться до документации и все настроить. Не существует прямого пути «Начало работы». Настройка проекта, который показывает вам все в упорядоченном виде. Надеюсь, они его добавят.

person msharpp    schedule 08.06.2017