2016-03-19 2 views
12

Для начала я побежал:Невозможно запустить столпотворение через НПМ сценарий «столпотворение: команда не найдена»

npm install --save-dev babel-cli 
npm install --save-dev babel-preset-es2015 
npm install --save-dev babel-preset-stage-0 

Вот мой package.json:

{ 
     "scripts": { 
     "build": "babel src -d dist" 
     }, 
     "devDependencies": { 
     "babel-cli": "^6.6.5", 
     "babel-core": "^6.7.2", 
     "babel-preset-es2015": "^6.6.0", 
     "babel-preset-stage-0": "^6.5.0" 
     } 
    } 

Вот мой файл .babelrc :

{ 
    "presets": ["es2015", "stage-0"] 
} 

Моя файловая структура, как это:

- Root 
    - src 
     - client 
     - server 
     - test 
    - dist 
    - package.json 

Я вызываю сборку npm run из корневой папки. Я ожидаю, что он скомпилирует исходную папку в папку dist. Она работает, и я получаю эту ошибку:

> babel src -d dist 

sh: babel: command not found 

npm ERR! Darwin 15.2.0 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "build" 
npm ERR! node v5.8.0 
npm ERR! npm v3.7.3 
npm ERR! file sh 
npm ERR! code ELIFECYCLE 
npm ERR! errno ENOENT 
npm ERR! syscall spawn 
npm ERR! [email protected] build: `babel src -d dist` 
npm ERR! spawn ENOENT 
npm ERR! 
npm ERR! Failed at the [email protected] build script 'babel src -d dist'. 
npm ERR! Make sure you have the latest version of node.js and npm installed. 
npm ERR! If you do, this is most likely a problem with the redacted package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  babel src -d dist 
npm ERR! You can get information on how to open an issue for this project with: 
npm ERR!  npm bugs redacted 
npm ERR! Or if that isn't available, you can get their info via: 
npm ERR!  npm owner ls redacted 
npm ERR! There is likely additional logging output above. 

npm ERR! Please include the following file with any support request: 
npm ERR!  /Users/user/redacted/npm-debug.log 

Так как вы можете видеть, я установил столпотворение-кли, я установил заводские, и я думаю, что все в порядке в соответствии с Вавилонской документы.

У кого-нибудь есть идеи, почему он не будет работать? Могу ли я пропустить файл babel npm? Неверное значение "babel src -d dist"?

Спасибо за любую помощь, которую вы можете предоставить!

Я сделал еще одну папку и последовал тем же самым шагам, она отлично работала. По какой-то причине он не работает в этом каталоге.

+1

вы сделали 'NPM я'? Вы можете видеть их в node_modules? – Geraint

+0

@geraint да у меня есть! Для каждого из них я установил и использовал npm --save-dev – Justin

ответ

3

Вы установили «npm install» для установки пакетов dev?

+0

да, у меня есть! Для каждого из них я установил и использовал npm --save-dev – Justin

+1

Не могли бы вы указать папку node_modules? И ./node_modules/.bin? ls -l node_modules и ls -l ./node_modules/.bin –

+0

Да, это довольно большой список, поэтому я положил его на pastebin: http://pastebin.com/WVkWnixf @ s.xie – Justin

6

Ошибка возникает из-за того, что ./node_modules/.bin не находится в $PATH. ./node_modules/.bin - это то, где все исполняемые двоичные файлы можно найти.

В соответствии с рекомендациями documentation, вы можете ссылаться на babel консоли внутри node_modules:

$ ./node_modules/.bin/babel src -d lib 

Вы можете изменить свой npm run build команду, чтобы использовать это:

"scripts": { 
    "build": "./node_modules/.bin/babel src -d dist" 
}, 
+0

При запуске команды «npm run build», которая использует локальную копию, она не должна находиться в $ PATH. –

+0

Я пробовал это, и на самом деле я получаю ту же самую ошибку. Я заглянул в папку bin, и там ничего нет с именем «babel» – Justin

11

Я пришел поперек тот же вопрос в последнее время. Удаление папки node_modules и запуск npm install снова не устраняет проблему.

Причина, по которой вы получаете эту ошибку, заключается в том, что babel-cli необходимо установить глобально, а не как зависимость от проекта.

Запустить npm install -g babel-cli, чтобы установить его по всему миру.

Бабель-предустановленный es2015 может быть установлен как Dev зависимость для ваших проектов npm install --save-dev babel-preset-es2015

+1

Это заставит команду работать, единственное предостережение в том, что [Babel CLI docs] (https://babeljs.io/docs/usage/ cli /) настоятельно рекомендую вам не устанавливать глобально, даже если предположить, что вы запускаете 'npm uninstall - global babel-cli', если вы его установили глобально. По их словам, это связано с тем, что: _ ** 1. ** Различные проекты на одной машине могут зависеть от разных версий Babel, позволяющих вам обновлять по одному. ** 2. ** Это означает, что у вас нет неявной зависимости от среды, в которой вы работаете. Создание вашего проекта гораздо более переносимо и проще в настройке. – Joe

+0

Не рекомендуется использовать глобальную установку 'babel-cli', кроме удаления папки' node_modules' и запущенной 'npm install' ** все еще ** исправляет проблему –

7

Вы никогда не должны устанавливать столпотворение-кли глобально - на самом деле, они specifically have an entire paragraph telling you not to из своих официальных документов.

Редактировать package.json >> добавить скрипт с ключом под названием, скажем, build со значением ./node_modules/.bin/babel <commands>

Если вы назвали его build, просто введите npm run build.

0

Многие из приведенных выше ответов верны.

The error occurs because ./node_modules/.bin is not in $PATH . ./node_modules/.bin is where all the executable binaries can be found.

Что я сделал, так это то, что я создал простую функцию динамического псевдонима в моем файле zshrc.

# Babel 
function bbl() { 
    ./node_modules/.bin/babel "[email protected]" 
} 

Теперь вы можете использовать bbl вместо Вавилонской

bbl --version 
6.24.1 (babel-core 6.25.0) 
Смежные вопросы