Babel-Befehl nicht gefunden

75

Ich habe das babel-cli Werkzeug wie erläutert durch die Babel installiert ‚Erste Schritte‘ Seite.

Von einem Terminal in meinem Projektordner:

npm install --save-dev babel-cli

Danach gibt es ein node_modules-Verzeichnis mit einem babel-cli-Ordner, aber es wird keine package.json erstellt. npm zeigt auch den folgenden Fehler:

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

Beim Versuch, babel auszuführen, erhalte ich Folgendes:

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

Ich habe die neueste Version von nodejs / npm installiert. Ich habe npm update -g ausgeführt und meine .bash_profile- Datei so bearbeitet, dass sie Folgendes enthält:

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

Ich habe dies nicht mit anderen npm-Tools wie browserify erlebt. Warum wird Babel nicht erkannt?

Kokodoko
quelle
1
Sie können hier sehen, wie Sie mit babel-cli beginnen können: stackoverflow.com/questions/34483748/…
James Hibbard
Wenn Sie Fisch verwenden, versuchen Sie es mit github.com/oh-my-fish/plugin-node-binpath
onmyway133
In meinem Fall musste ich meine node_modules neu installieren: rm -rf ./node_modules && npm i
Richard

Antworten:

88

Hier gibt es zwei Probleme. Zunächst benötigen Sie eine package.jsonDatei. Wenn Sie npm anweisen, ohne einen zu installieren, wird der npm WARN enoent ENOENT: no such file or directoryFehler ausgegeben. Führen Sie npm initin Ihrem Projektverzeichnis aus, um eine package.jsonDatei für das Projekt zu generieren .

Zweitens werden lokale Binärdateien wahrscheinlich nicht gefunden, da die lokalen ./node_modules/.binnicht vorhanden sind $PATH. Es gibt einige Lösungen unter Wie verwende ich ein lokal in node_modules installiertes Paket? , aber es könnte einfacher sein, Ihre babel-cli-Befehle einfach in npm-Skripte zu verpacken. Dies funktioniert, weil npm rundie Ausgabe von npm bin( node_modules/.bin) zu den PATHbereitgestellten Skripten hinzugefügt wird.

Hier ist ein reduziertes Beispiel, package.jsondas die lokal installierte babel-cli-Version zurückgibt:

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

Rufen Sie das Skript mit diesem Befehl auf : npm run babel-version.

Das Einfügen von Skripten in package.json ist sehr nützlich, wird jedoch häufig übersehen. Viel mehr in den Dokumenten: Wie npm mit dem Feld "Skripte" umgeht

Joemaller
quelle
2
Nachdem ~/.profileich die anderen Antworten geprüft und das Durcheinander mit meiner Datei untersucht habe, um sicherzustellen, dass ich die Pakete lokal aufrufen kann node_modules, bin ich zu dem Schluss gekommen, dass der scriptsBereich package.jsondie beste Option ist. Sie müssen Ihren Mitarbeitern nicht sagen, dass sie ihre Profile ändern oder einen Alias ​​erstellen sollen. Ihre Skripte funktionieren einfach.
Jared Egan
36

Als ich diese Frage fand, suchte ich

$ npm install -g babel-cli
Martin Thoma
quelle
1
Sie sollten niemals sudo mit npm verwenden müssen. Versuchen Sie, Ihre Knotenversionen mit nvm zu verwalten.
John Ottenlips
1
npm install -g babel-cliFunktioniert ohne Sudo.
John Ottenlips
2
Sie sollten sudomit verwenden, npm install -g babel-clium auf diese Datei / usr / local / lib / node_modules zuzugreifen. Andernfalls wird Ihnen dies verweigert.
Code
In den Dokumenten zu @ babel / cli wird empfohlen, babel-cli nicht global zu installieren (um Konflikte mit anderen Projekten zu vermeiden, die andere Versionen von babel verwenden, und um die Portabilität zu verbessern)
7hibault
11

Dies ist ein häufiges Problem, bei dem nach .cmdDateien aus Ihrem Stammverzeichnis gesucht wird, in dem Sie sie installiert haben babel-cli. Versuchen Sie den folgenden Befehl.

./node_modules/.bin/babel.cmd

Sobald Sie Ihren Quellcode in der Eingabeaufforderung sehen können. Ihr nächster Schritt ist die Installation eines weiteren npm-Moduls babel-preset-es2015.

Folgen Sie der folgenden Antwort, um zu installieren babel-preset-es2015und zu sehen, warum Babel dies benötigt.

Babel-Datei-wird-kopiert-ohne-transformiert zu werden

Alamelu Venkat
quelle
6

Dies ist , was ich habe meinen lokales Projekt getan , um automatisch hinzufügen node_modules/.binPfad PATH. In ~/.profilefügte ich hinzu:

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

Laden Sie dann Ihr Bash-Profil neu: source ~/.profile

Yega
quelle
6

So installieren Sie Version 7+ von Babel:

npm install -g @babel/cli
npm install -g @babel/core
sean2078
quelle
Das hat mir geholfen!
JavaRunner
4

Die babelglobale Installation löst dieses Problem:

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

Allerdings ist es nicht Abhängigkeiten fördern global zu installieren , weil sie nicht ihre Versionen auf einer Pro-Projektbasis verwaltet haben.

Sie sollten Ihre Abhängigkeiten lokal installieren, wie in babelder Dokumentation vorgeschlagen :

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

Der Nachteil ist, dass Sie auf diese Weise keine schnelle / bequeme Möglichkeit haben, lokale Binärdateien interaktiv aufzurufen (in diesem Fall babel). npxgibt Ihnen eine gute Lösung:

npx babel --version

Dadurch wird Ihre lokale Installation von ausgeführt babel. Wenn Sie die Eingabe vermeiden möchten npx, können Sie außerdem den automatischen Fallback der Shell konfigurieren und dann einfach Folgendes ausführen:

babel --version

Hinweis: Es ist wichtig .babelrc, im Stammverzeichnis Ihres Projekts eine Datei zu erstellen , in der Sie Ihre Babel-Konfiguration angeben. Als Ausgangspunkt können Sie env-presetauf ES2015 + transpilieren:

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

Um die Voreinstellung zu aktivieren, müssen Sie sie wie folgt in Ihrer .babelrc-Datei definieren:

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

Ich hatte das gleiche Problem. Löschte den nodemodulesOrdner und öffnete die Eingabeaufforderung als Administrator und lief dann npm install.

Alle Pakete gut installiert.

Madhav
quelle
1

Sie müssen wie folgt Anführungszeichen um den Pfad zu Ihrer Babel-Datei hinzufügen

"./node_modules/.bin/babel" --help

Mahtab Alam
quelle
1

Wenn Sie cmd-Befehle verwenden möchten, haben Sie zwei Möglichkeiten. Installieren Sie es zunächst in einer gloabl-Umgebung. Der andere Weg ist npm link. Versuchen Sie also den ersten Weg : npm install -g babel-cli.

YinPeng.Wei
quelle
1

Eine Möglichkeit besteht darin, die CLI global zu installieren.

Seit der Veröffentlichung von Babel 7 hat sich der Namespace von babel-cliauf geändert @babel/cli, daher:

npm install --global @babel/cli

Sie werden wahrscheinlich immer noch auf Fehler stoßen, wenn @babel/core:

npm install --global @babel/core
Kylegill
quelle
0

Ich stieß auf das gleiche Problem und probierte wirklich alles aus, was mir einfiel. Ich bin kein Fan davon, irgendetwas global zu installieren, sondern musste irgendwann laufen npm install -g babel-cli, was mein Problem löste. Vielleicht nicht die Antwort, aber definitiv eine mögliche Lösung ...

bakke2ooo
quelle
0

Arbeitete für mich zB

./node_modules/.bin/babel --version
./node_modules/.bin/babel src/main.js
Mandakini
quelle
0

Für diejenigen, die Yarn als Paketmanager anstelle von npm verwenden:

yarn global add babel-cli
Cody Pinto
quelle
0

Dies funktionierte für mich in package.json als npm-Skript, aber es scheint zu lange zu dauern, bis ich die Pakete gefunden habe, obwohl ich sie als Entwicklerabhängigkeiten habe. Es scheint auch zu lang.

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

Was am Ende gelöst wurde, war viel einfacher, aber auch lustig

npm install

Ich dachte, ich hätte das schon gemacht, aber ich denke, etwas musste wieder aufgebaut werden. Dann einfach:

"babel": "babel --version"
Ariel Guzman
quelle