Команду Babel не знайдено


76

Я встановив інструмент babel-cli, як пояснюється на сторінці "Початок роботи" Babel .

З терміналу всередині папки мого проекту:

npm install --save-dev babel-cli

Після цього існує каталог node_modules з папкою babel-cli, але пакет package.json не створений. npm також показує таку помилку:

npm WARN enoent ENOENT: no such file or directory, open '/Users/MyName/Sites/Tutorials/Babel2/package.json

При спробі запустити babel я отримую таке:

babel src -d lib
-bash: babel: command not found

У мене встановлена ​​остання версія nodejs / npm. Я запустив npm update -g і відредагував файл .bash_profile, щоб включити:

export PATH=$PATH:/Users/MyName/npm/bin
export PATH=/usr/local/share/npm/bin:$PATH

Я не відчував цього з іншими інструментами npm, такими як browserify. Чому бабель не визнається?


1
Ви можете побачити, як розпочати роботу з babel-cli тут: stackoverflow.com/questions/34483748/…
Джеймс Хіббард,

Якщо ви використовуєте рибу, спробуйте github.com/oh-my-fish/plugin-node-binpath
onmyway133

У моєму випадку мені довелося перевстановити мої node_modules: rm -rf ./node_modules && npm i
Річард

Відповіді:


88

Тут є дві проблеми. По-перше, вам потрібен package.jsonфайл. Повідомлення npm про встановлення без одного призведе до npm WARN enoent ENOENT: no such file or directoryпомилки. У каталозі проекту запустіть, npm initщоб створити package.jsonфайл проекту.

По-друге, локальні двійкові файли, ймовірно, не знайдені, оскільки локальні файли ./node_modules/.binвідсутні $PATH. Є кілька рішень у розділі Як використовувати пакет, встановлений локально в node_modules? , але може бути простіше просто обернути свої команди babel-cli у сценарії npm. Це працює, оскільки npm runдодає результат npm bin( node_modules/.bin) до PATHнаданого сценарію.

Ось package.jsonприведений приклад, який повертає локально встановлену версію babel-cli:

{
  "scripts": {
    "babel-version": "babel --version"
  },
  "devDependencies": {
    "babel-cli": "^6.6.5"
  }
}

Виклик сценарію з допомогою цієї команди: npm run babel-version.

Поміщення скриптів у package.json є досить корисним, але часто ігнорується. Набагато більше в документах: Як npm обробляє поле "сценарії"


2
Після розгляду інших відповідей, і досліджуючи балуватися з моїм ~/.profileфайлом , щоб гарантувати , що я можу назвати пакети в локальному node_modules, я уклав scriptsплоща package.jsonє найкращим варіантом. Вам не потрібно буде казати своїм колегам змінювати свої профілі чи створювати псевдоніми, ваші сценарії просто працюватимуть.
Jared Egan

36

Коли я знайшов це запитання, я шукав

$ npm install -g babel-cli

1
Вам ніколи не доведеться використовувати sudo з npm. Спробуйте використовувати nvm для управління версіями вузлів.
Джон Оттенліпс

1
npm install -g babel-cliПрацюватиме без судо.
Джон Оттенліпс

2
Ви повинні використовувати sudoз npm install -g babel-cliдля доступу до цього файлу / USR / місцеві / Бібліотека / node_modules, інакше ви будете заперечувати.
Код

Документи @ babel / cli рекомендують не встановлювати babel-cli глобально (щоб уникнути конфліктів з іншими проектами, що використовують різні версії babel, та покращити портативність)
7hibault

11

Це поширена проблема та пошук .cmdфайлу з кореневого каталогу, де ви встановили babel-cli. Спробуйте команду нижче.

./node_modules/.bin/babel.cmd

Як тільки ви зможете побачити свій вихідний код у командному рядку. Наступним кроком є ​​встановлення ще одного модуля npm babel-preset-es2015.

Дотримуйтесь наведеної нижче відповіді, щоб встановити, babel-preset-es2015і з’ясуйте, чому це потрібно.

babel-файл-копіюється-не перетворюється


6

Це те, що я зробив для автоматичного додавання мого локального node_modules/.binшляху до проекту PATH. У ~/.profileя додав:

if [ -d "$PWD/node_modules/.bin" ]; then 
    PATH="$PWD/node_modules/.bin"
fi

Потім перезавантажте свій профіль bash: source ~/.profile


6

Щоб встановити версію 7+ запуску Babel:

npm install -g @babel/cli
npm install -g @babel/core

Ось що мені допомогло!
JavaRunner

5

Встановлення babelглобально вирішує цю проблему:

npm install -g @babel/core @babel/cli

Однак не рекомендується встановлювати залежності глобально, оскільки вони не матимуть своїх версій, керованих для кожного проекту.

Ви повинні встановлювати свої залежності локально, як пропонується в документаціїbabel ' :

npm install --save-dev @babel/core @babel/cli

Недоліком є ​​те, що це не дає вам швидкого / зручного способу інтерактивного виклику локальних двійкових файлів (у цьому випадку babel). npxдає вам чудове рішення:

npx babel --version

Це запустить вашу локальну інсталяцію babel. Крім того, якщо ви хочете уникати друкуnpx , ви можете налаштувати автоматичне відновлення оболонки , а потім просто запустити:

babel --version

Примітка: важливо створити файл .babelrcу кореневому каталозі проекту, в якому ви вкажете свою конфігурацію babel. Як вихідну точку ви можете використовувати env-presetдля транспіляції до ES2015 +:

npm install @babel/preset-env --save-dev

Для того, щоб увімкнути пресет, його потрібно визначити у своєму файлі .babelrc, наприклад:

{
  "presets": ["@babel/preset-env"]
}

3

У мене була та сама проблема. Видалив nodemodulesпапку та відкрив командний рядок як адміністратор, а потім запустив npm install.

Усі пакети встановлені нормально.


1

Вам потрібно буде додати лапки навколо шляху до вашого файлу babel, як показано нижче

"./node_modules/.bin/babel" --допомога


1

Насправді, якщо ви хочете використовувати команди cmd, у вас є два шляхи. Спочатку встановіть його в середовищі gloabl. Інший шлях є npm link. так, спробувати перший спосіб: npm install -g babel-cli.



1

Один із варіантів - встановити кліп глобально.

З моменту випуску Babel 7 простір імен змінився з babel-cliна @babel/cli, отже:

npm install --global @babel/cli

Ви, ймовірно, все ще будете стикатися з помилками, оскільки @babel/core:

npm install --global @babel/core

0

Я зіткнувся з тією ж проблемою, випробував насправді все, що міг подумати. Не будучи шанувальником встановлення чогось глобально, але врешті-решт довелося запустити npm install -g babel-cli, що вирішило мою проблему. Можливо, не відповідь, але однозначно можливе рішення ...


0

Для тих, хто використовує пряжу як менеджер пакетів замість npm:

yarn global add babel-cli

0

Це працювало для мене всередині package.json як скрипт npm, але, здається, потрібно довго забирати пакети, хоча у мене вони є залежностями розробників. Це теж здається занадто довгим.

"babel": "npx -p @babel/cli -p @babel/core babel --version"

Що врешті-решт вирішило це було набагато простіше, але теж смішно

npm install

Я думав, що вже запустив це, але, мабуть, щось потрібно було відбудувати. Тоді просто:

"babel": "babel --version"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.