React-Native: не удается обновить Babel до ES7

Я пытаюсь использовать новые функции ES7 async/await, но, насколько я вижу в своих собственных node_modules, у меня их нет.

У меня была нативная версия 0.31, и я только что обновил ее до 0.32. Я вижу, что Babel все еще не обновляется с функциями ES7, поэтому я не могу использовать async/await. Знаете ли вы, как мне заставить его работать?


person NinetyHH    schedule 07.09.2016    source источник
comment
Вы пытались запустить свое приложение с асинхронным кодом? React native использует babel-preset-react-native, который также содержит асинхронный плагин. Я также использую асинхронность в своих приложениях.   -  person while1    schedule 07.09.2016
comment
Да, и чем я получаю console.error с сообщением Неожиданный токен.   -  person NinetyHH    schedule 07.09.2016
comment
async/await не является функцией ES7. Он будет выпущен в следующем году в рамках ES2017.   -  person Felix Kling    schedule 21.10.2016


Ответы (2)


Вам нужно установить пару плагинов babel, затем вы можете использовать декораторы ES7 и сохранить их в devDependencies:

1-babel-plugin-transform-decorators-legacy

npm i babel-plugin-transform-decorators-legacy --save-dev

2-babel-preset-react-native-stage-0

npm i babel-preset-react-native-stage-0 --save-dev

Наконец, создайте .babelrc в файле корневой папки проекта, если он не существует, и добавьте следующие строки:

{
 'presets': ['react-native'],
 'plugins': ['transform-decorators-legacy']
}
person Abdulaziz Alkharashi    schedule 07.09.2016

По умолчанию Babel не поставляется с async/await. Чтобы использовать их, установите этот плагин:

npm install babel-plugin-syntax-async-functions

и используйте его вот так в вашем файле .babelrc:

{
  "plugins": ["syntax-async-functions"]
}

Ссылка: https://babeljs.io/docs/plugins/syntax-async-functions/

person winhowes    schedule 07.09.2016
comment
Теперь он поставляется с babel в модуле react-native. - person NinetyHH; 07.09.2016
comment
Можете тогда перефразировать свой вопрос? Проблема в том, что у вас не установлен Babel? - person winhowes; 07.09.2016
comment
Моя ошибка, надеюсь, теперь лучше. - person NinetyHH; 07.09.2016
comment
У меня около 20 файлов .babelrc, я не уверен, какой из них хороший... - person NinetyHH; 07.09.2016
comment
откуда у тебя 20? В корне вашего проекта должен быть только один. Если его нет, вы можете просто создать его - person winhowes; 07.09.2016
comment
Я вижу, что каждый node_module из react-native, который поставляется с babel, имеет один. - person NinetyHH; 07.09.2016
comment
Да, не добавляйте его к одному в node_module. Создайте его в своем корневом каталоге - person winhowes; 07.09.2016