2016-03-19 16 views
12

Per iniziare mi sono imbattuto:Impossibile eseguire babele tramite script NPM "babele: command not found"

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

Ecco il mio 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" 
     } 
    } 

Ecco il mio file .babelrc :

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

la mia struttura del file è come questo:

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

Sto chiamando npm eseguire build dalla cartella principale. Mi aspetto che compili la cartella sorgente nella cartella dist. Corre e poi ottengo questo errore:

> 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 

Quindi, come potete vedere, ho installato babel-cli, ho installato i preset, e penso che tutto sia in ordine in base ai documenti Babele.

Qualcuno ha idee sul motivo per cui non funzionerebbe? Potrei mancare un file babel npm? "Babel src -d dist" è errato?

Grazie per l'aiuto che puoi fornire!

Ho creato un'altra cartella e ho seguito gli stessi passaggi, ha funzionato perfettamente. Per qualche motivo non funziona in questa directory.

+1

Avete fatto 'NPM i'? Puoi vederli in node_modules? – Geraint

+0

@geraint si ho! Per ognuno di essi ho installato e usato npm --save-dev – Justin

risposta

3

Hai eseguito "npm install" per installare i pacchetti dev?

+0

sì, ho! Per ognuno ho installato e usato npm --save-dev – Justin

+1

Puoi elencare la cartella node_modules? E il ./node_modules/.bin? ls -l node_modules e ls -l ./node_modules/.bin –

+0

Sì, è una lista piuttosto ampia quindi la metto su pastebin: http://pastebin.com/WVkWnixf @ s.xie – Justin

6

L'errore si verifica perché ./node_modules/.bin non è in $PATH. ./node_modules/.bin è dove è possibile trovare tutti i binari eseguibili.

Come raccomandato dal documentation, è possibile fare riferimento i babel cli all'interno di node_modules:

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

È possibile modificare il vostro comando npm run build di utilizzare questo:

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

Non è necessario essere in $ PATH quando si esegue il comando "npm run build" che sta utilizzando la copia locale. –

+0

Ho provato questo e ancora effettivamente ricevo lo stesso errore. Ho guardato all'interno della cartella bin e non c'è niente lì dentro con il nome "babel" – Justin

11

che ho incontrato il lo stesso problema ultimamente. La rimozione della cartella node_modules e l'esecuzione di npm install non risolvono più il problema.

Il motivo per cui si verifica questo errore è dovuto al fatto che babel-cli deve essere installato a livello globale, non come dipendenza del progetto.

Eseguire npm install -g babel-cli per installarlo globalmente.

Babel-preimpostato-es2015 può quindi essere installato come una dipendenza dev per i vostri progetti npm install --save-dev babel-preset-es2015

+1

Questo comando funzionerà, l'unica avvertenza è che i [Babel CLI docs] (https://babeljs.io/docs/usage/ cli /) consiglia vivamente di non installarlo globalmente, arrivando addirittura a suggerire di eseguire 'npm uninstall --global babel-cli' se lo si installa a livello globale. Nelle loro parole ciò è dovuto al fatto che: _ ** 1. ** Diversi progetti sulla stessa macchina possono dipendere dalle diverse versioni di Babel che consentono di aggiornarne uno alla volta. ** 2. ** Significa che non si ha una dipendenza implicita sull'ambiente in cui si sta lavorando. Rendere il progetto molto più portatile e più facile da configurare. _ – Joe

+0

Non è una buona pratica utilizzare un'installazione globale di 'babel-cli', oltre a rimuovere la cartella' node_modules' ed eseguire 'npm install' ** ** risolve il problema –

7

Non si dovrebbe mai installare babel-cli a livello globale - in realtà, essi specifically have an entire paragraph telling you not to dai loro documentazione ufficiale.

Modifica package.json >> aggiungere uno script con la chiave di chiamata, per esempio, con il valore build./node_modules/.bin/babel <commands>

Se avete chiamato è build, basta digitare npm run build.

0

Molte delle risposte precedenti sono corrette.

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

Quello che ho fatto è stato creare una semplice funzione alias dinamica nel mio file zshrc.

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

Ora è possibile utilizzare bbl al posto di Babel

bbl --version 
6.24.1 (babel-core 6.25.0) 
Problemi correlati