2016-06-04 15 views
1

Definitiv eine noob Frage also bitte nicht urteilen, aber das hat mich für eine Weile belästigt.'express' Befehl nicht gefunden auf dem Mac

Nicht mehr, wie oft ich $ sudo npm install -g express-generator oder $ npm install express -g ausführen, scheint alles zu installieren, aber der Befehl $ express noch nicht vorhanden.

Ich renne Fisch Shell. Außerdem nehme ich an, dass dies ein Problem ist, das von meiner PATH-Datei kommt, aber ich bin verloren, wenn das .bash_profile oder .bashrc ist.

Mein Bash_profile hat die drei Linien in ihr:

export PATH=/usr/local/bin:$PATH 
    export PATH=/Users/username/.node/lib/node_modules/express-generator/bin/express:$PATH 
    export PATH=/Users/username/.node/bin/express:$PATH 

und meine .bashrc hat darin nichts über Knoten.

Wenn Express installiert, gibt sie:

/Users/username/.node/bin/express -> /Users/username/.node/lib/node_modules/express-generator/bin/express 
    /Users/username/.node/lib 

aber wenn ich which node Befehl gibt es

/usr/local/bin/ 

Wenn ich versuche, $ls -l /usr/local/bin/express führen Sie es zurück:

ls: /usr/local/bin/express: No such file or directory 

nicht gefunden die Diagnose, warum der Express-Befehl nicht nach in funktioniert Installation.

+0

F: 'node' und' npm' beide arbeiten in der Befehlszeile, richtig? F: Könnten Sie bitte Ihren Beitrag mit der Ausgabe für diesen Befehl aktualisieren: 'ls -l/usr/local/bin/express'? F: Gibt es eine Fehlermeldung? Wenn ja, bitte kopieren Sie den genauen Text in Ihren Post. – paulsm4

+0

aktualisiert mit dem, was zurückgegeben wird, dass der Befehl – fullwackdeveloper

+1

OK: 1) F: Was passiert mit "Express-Generator" und "welcher Express-Generator"? 2) Bitte schauen Sie sich diesen Thread an: [Express-Befehl nicht gefunden] (http://stackoverflow.com/questions/23002448/express-command-not-found) – paulsm4

Antwort

0

Vom Symlink nach der Installation sollte die express Binärdatei im Verzeichnis /Users/username/.node/bin verfügbar sein. Der Grund, warum Sie die Binärdatei nicht verwenden können, liegt darin, dass sich das Verzeichnis /Users/username/.node/bin nicht in Ihrer $PATH befindet. Was ist in der $PATH ist die binäre selbst.

Wenn Sie ein Verzeichnis zu Ihrem $PATH hinzufügen, können Sie Binärdateien innerhalb des Verzeichnisses ausführen. Momentan zeigt Ihre $PATH auf die /Users/username/.node/bin/express, die keine Binärdateien enthält. Sie sollten es korrigieren:

export PATH=/Users/username/.node/bin:$PATH 
+0

folgte diesem Rat und es wird immer noch nicht ganz funktionieren. versuchte Befehl '$ echo $ PATH' und es gibt: '/ usr/local/bin/Benutzer/Benutzername/.node/bin /' '/ usr/sbin' '/usr/local/bin' '/usr/bin '' /bin' '/ usr/sbin' '/sbin' '/ opt/X11/bin' '/usr/local/go/bin' '/ Benutzer/[myusername]/.node/bin' Ist das nicht zu viel? Würdest du wissen, wie ich den '/ Users/username/.node/bin /' aus meinem $ PATH entfernen kann? – fullwackdeveloper

2

Wenn Sie Fisch ausführen, .bash_profile wird ignoriert, natürlich!

Der bevorzugte Weg /Users/username/.node/bin/ zu $ ​​PATH in Fisch hinzuzufügen, ist wie folgt:

set -U fish_user_paths $fish_user_paths /Users/username/.node/bin/ 

, dass Sie einmal laufen nur etwas ist, auf der Kommandozeile - nicht etwas, Sie legen eine Startup-Datei ein.

Wenn Sie Startdateien verwenden möchten, können Sie stattdessen Ihre ~/.config/fish/config.fish wie so ändern:

set PATH $PATH /Users/username/.node/bin/ 
+0

Ich habe beide, und sie werden nicht funktionieren. Wenn ich jedoch $ PATH zurückgebe, bekomme ich: '/ usr/local/bin/Benutzer/Benutzername/.node/bin /' '/ usr/sbin' '/usr/local/bin' '/ usr/bin' ' /bin' '/usr/sbin' '/ sbin' '/opt/X11/bin' '/ usr/local/go/bin' '/Benutzer/[myusername ] /. node/bin' Ist das nicht zu viel? Wie entferne ich auch den/users/username/.node/bin/'aus meinem $ PATH? – fullwackdeveloper

+0

Es ist sehr überraschend, dass '/ Users/username/.node/bin /' in $ PATH wäre, aber 'express' würde nicht gefunden werden. Ist die Datei '/ Users/Benutzername/.node/bin/express' tatsächlich vorhanden? Natürlich sollte der Benutzername natürlich durch deinen tatsächlichen Benutzernamen ersetzt werden. –

+0

Wenn Sie dieses Pfadelement über fish_user_paths hinzugefügt haben, können Sie einfach 'set -e fish_user_paths [1]' schreiben, um es zu entfernen. –