Не удается найти модуль, указанный в babel.config. json - PullRequest
2 голосов
/ 24 марта 2020

Я новичок в использовании Babel, но установил его в соответствии с руководством по установке здесь https://babeljs.io/setup#installation

В конце говорится, что для этого необходимо установить плагины на работу:

Теперь из коробки Бабел ничего не делает ... Вам нужно будет добавить плагины, чтобы Бабел что-то делал.

Я хочу чтобы использовать этот плагин: https://babeljs.io/docs/en/babel-plugin-transform-async-to-generator, чтобы исправить некоторые проблемы Inte rnet Explorer 11, как описано здесь: asyn c объявление функции ожидает ';' в Inte rnet Explorer

Я создал файл в root моего проекта с именем babel.config.json и добавил к нему следующее.

{
    "plugins": ["@babel/plugin-transform-async-to-generator"]
}

My package.json содержит это:

"scripts": {
     "build": "babel webroot/js -d webroot/js/babel"
},
"devDependencies": {
     "babel-cli": "^6.0.0"
},

Когда я выполняю npm run build из моего проекта root, он выдает следующие сообщения об ошибках.

Error: Cannot find module '@babel/plugin-transform-async-to-generator' from '/Users/andy/my-project'

До создания babel.config.json I смог запустить npm run build без каких-либо ошибок. В соответствии с цитатой это на самом деле не делает ничего, кроме вывода того же JavaScript, что и до его переноса. Но я знал, что процесс сработал - в моем случае входные файлы находятся в webroot/js, и он выводит эквивалентные перенесенные файлы в webroot/js/babel.

Я не понимаю, как исправить эту ошибку. Это какая-то проблема с моим конфигурационным файлом или необходима дополнительная настройка?

Я прочитал документацию по Babel Config Files в https://babeljs.io/docs/en/config-files и нашел это невероятно запутанным. Моя цель - создать файл конфигурации для каждого проекта, поэтому я выбрал babel.config.json

npm версия 6.13.4, версия узла 12.16.1.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

babel-cli устарел, вместо него следует установить @babel/cli. Он также имеет одноранговую зависимость от @babel/core, которую также необходимо установить. @babel/plugin-transform-async-to-generator Плагин должен быть установлен отдельно.

Суммирование:

  • Удаление устарело babel-cli:
npm uninstall --save-dev babel-cli
  • Установить необходимые пакеты:
npm install --save-dev @babel/cli @babel/core @babel/plugin-transform-async-to-generator

Что касается вашей проблемы с IE 11. @babel/plugin-transform-async-to-generator, это не решит вашу проблему. IE 11 не поддерживает yield.

Если вы хотите использовать новейшие функции ECMAScript и по-прежнему поддерживать широкий спектр браузеров, вам следует вместо этого использовать @babel/preset-env. Вы можете проверить документы на официальном сайте: @babel/preset-env.

Чтобы async работал в IE 11, вам также нужно будет настроить полифилы. @babel/preset-env не будет использовать их с настройками по умолчанию. Обратитесь к опции useBuiltIns для получения инструкций.


Кроме того, существует проблема с вашим скриптом сборки, особенно с этой строкой: babel webroot/js -d webroot/js/babel.

С такая команда babel будет обрабатывать весь каталог webroot/js (включая подкаталоги) и помещать перенесенные файлы в webroot/js/babel. Это означает, что после повторного запуска этой команды она будет обрабатывать не только ваши исходные файлы, но и перенесенные исходные файлы, поскольку webroot/js/babel является подкаталогом webroot/js.

0 голосов
/ 26 марта 2020

Я думаю, вам нужно установить @babel/plugin-transform-async-to-generator. Подробнее здесь: https://www.npmjs.com/package/@babel / plugin-transform-asyn c -to-generator # install

npm install --save-dev @babel/plugin-transform-async-to-generator
...