browserify error / usr / bin / env: node: Brak takiego pliku lub katalogu


85

Zainstalowałem node js i npm przez apt-get install i wszystkie zależności, a następnie zainstalowałem browserify

npm install browserify -g

przechodzi przez proces i wygląda na to, że został poprawnie zainstalowany, ale kiedy próbuję zrobić prosty pakiet zgodnie z tym przewodnikiem

Wyskakuje mi błąd:

/ usr / bin / env: node: Nie ma takiego pliku lub katalogu

wprowadź opis obrazu tutaj


hmm powinieneś sprawdzić, czy plik wykonywalny węzła znajduje się w / usr / bin lub / usb / bin / env, przynajmniej jest to specyficzny problem operacyjny. Możesz rozwiązać ten problem, instalując browserify local.
bodokaiser

mój plik wykonywalny przeglądarki znajduje się w katalogu / usr / local / bin /, ale czy wywołuje coś innego, co jest popsute?
Eduardo Dennis,

3
Ach, musisz dowiązać symboliczne nodejs do węzła na Ubuntu. Ubuntu instaluje węzeł jako nodejs, a następnie musisz zrobić coś takiego jak „ln -s / usr / bin / nodejs / usr / bin / node”, aby system znalazł go również jako węzeł
bodokaiser

1
to rozwiązało problem: - Łamałem sobie głowę przez ostatnią godzinę, czy możesz podać format odpowiedzi, aby zaakceptować?
Eduardo Dennis,

1
cieszę się, że zadziałało, nie byłem pewien, czy to naprawdę ten problem, dlatego najpierw skomentowałem :)
bodokaiser

Odpowiedzi:


246

Niektóre dystrybucje Linuksa instalują nodejs nie jako plik wykonywalny „węzła”, ale jako plik wykonywalny „nodejs”.

W tym przypadku musisz ręcznie połączyć z „węzłem”, ponieważ wiele pakietów jest programowanych po pliku binarnym „węzeł”. Coś podobnego występuje również w przypadku „python2” niepowiązanego z „pythonem”.

W takim przypadku możesz zrobić proste łącze symboliczne. W przypadku dystrybucji Linuksa, które instalują pliki binarne, /usr/binmożesz to zrobić

ln -s /usr/bin/nodejs /usr/bin/node

5
To nie jest rozwiązanie dla Ubuntu 14.04, ponieważ /usb/sbin/nodejest to węzeł ax24 (niezwiązany z nodejs). Tylko symboliczne powiązanie aby /usr/bin/nodenie zadziała, ponieważ /usr/sbin/nodejest na pierwszym miejscu w$PATH
Gareth

8
prawidłowym sposobem rozwiązania tego problemu jest użycie update-alternatives. zobacz moją odpowiedź tutaj stackoverflow.com/a/24592328/454615
airtonix

1
w rzeczywistości myślenie o tym więcej ... tworzenie dowiązań symbolicznych do plików binarnych w ten sposób to świetny nawyk, jeśli chcesz złamać swój system.
airtonix

tak, zauważyłem, że łagodzi to w subtelny sposób, czy znalazłeś lepsze rozwiązanie?
Eduardo Dennis

1
@EduardoDennis tak, użyj update-alternatives. istnieje w takich właśnie sytuacjach.
airtonix

52

Nowa odpowiedź:

  1. Odinstaluj każdy pakiet nodejs, który zainstalowałeś przez systemowego menedżera pakietów (dnf, apt-get, itp.), Usuń wszelkie głupie dowiązania symboliczne, które odtwarzałeś przy każdej aktualizacji (lol).
  2. Zainstaluj NVM,
  3. użyj nvm, aby zainstalować nodejs: nvm install 6

Stara odpowiedź:

Wszelkie rozmowy o tworzeniu dowiązań symbolicznych lub instalowaniu jakiegoś innego pakietu węzłów są fałszywe i nie do przyjęcia.

Prawidłowym sposobem rozwiązania tego problemu jest:

  1. po prostu zainstaluj pakiet nodejs za pomocą apt-get, tak jak już masz
  2. użyj, update-alternativesaby wskazać, za który plik binarny nodejs jest odpowiedzialny#!/usr/bin/env node

Tak jak to:

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

Teraz staje się to trwałe w przypadku aktualizacji pakietów, aktualizacji dystrybucji i tak dalej.


To jest rozwiązanie mojego problemu stackoverflow.com/questions/26155795/…
Alon Carmel

Dzięki, świetne rozwiązanie, sztuczka z linkami symbolicznymi jest najczęściej powtarzana w sieci, ale nie zadziałała.
Emilia Tyl

Rzeczywistą poprawną odpowiedzią jest teraz użycie NVM w systemie Linux i Nodist w systemie Windows.
airtonix

35

Biegnij apt-get install nodejs-legacy.

Niektóre dystrybucje Linuksa zmieniły nazwę binarną node.js, czyniąc ją niekompatybilną z wieloma pakietami node.js. Pakiet nodejs-legacyzawiera łącze symboliczne, aby rozwiązać ten problem.


2
Jest to rozwiązanie dla Ubuntu 14.04, ponieważ /usb/sbin/nodejest to węzeł ax24 (niezwiązany z nodejs). Tylko symboliczne powiązanie aby /usr/bin/nodenie zadziała, ponieważ /usr/sbin/nodejest na pierwszym miejscu w$PATH
Gareth

Pomogli mi. Dzięki!
Lapidus

apt-get install nodejs-legacy. mówi, że dla użytkownika systemu Windows „apt-get” nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.
Swift

7

Możesz także zainstalować Nodejs za pomocą NVM lub Nodejs Version Manager . Korzystanie z menedżera wersji ma wiele zalet . Jednym z nich jest to, że nie musisz się martwić tym problemem.


Instrukcje:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Po zainstalowaniu wstępnie wymaganych pakietów możesz ściągnąć skrypt instalacyjny nvm ze strony projektu GitHub. Numer wersji może być inny, ale generalnie można ją pobrać i zainstalować przy użyciu następującej składni:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Spowoduje to pobranie skryptu i uruchomienie go. Zainstaluje oprogramowanie w podkatalogu twojego katalogu domowego pod adresem ~/.nvm. Doda również niezbędne wiersze do ~/.profilepliku, aby użyć pliku.

Aby uzyskać dostęp do funkcji nvm, musisz się wylogować i zalogować ponownie lub możesz pobrać plik ~ / .profile, aby Twoja bieżąca sesja wiedziała o zmianach:

source ~/.profile

Po zainstalowaniu nvm możesz zainstalować izolowane wersje Node.js.

Aby dowiedzieć się, jakie wersje Node.js są dostępne do instalacji, możesz wpisać:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Jak widać, najnowsza wersja w momencie pisania tego tekstu to v0.11.14. Możesz to zainstalować wpisując:

nvm install 0.11.14

Zazwyczaj nvm przełączy się na najnowszą zainstalowaną wersję. Możesz wyraźnie powiedzieć nvm, aby używał wersji, którą właśnie pobraliśmy, wpisując:

nvm use 0.11.14

Gdy instalujesz Node.js przy użyciu nvm, plik wykonywalny nosi nazwę node. Możesz zobaczyć wersję aktualnie używaną przez powłokę, wpisując:

node -v

Kompletny samouczek można znaleźć tutaj


tak, plus jeden dla menedżerów wersji środowiska. zdecydowanie lepsza odpowiedź niż moja, mimo że nasza jest właściwym sposobem na zrobienie tego. Powiem, że nvm jest bardziej ukierunkowane na interaktywne stacje robocze, a nie serwery produkcyjne (ale nie rozumiem, dlaczego nie można go tam używać) ... osobiście jestem bardziej skłonny do używania obrazów dockera w produkcji.
airtonix


0

Wydaje mi się, że ten sam problem, kiedy buduję atom w Linuksie.

sudo apt-get install nodejs-dev

Napraw moje pytanie. Mam nadzieję, że jest dla ciebie pomocne.


0

Jeśli nie chcesz korzystać z linku symbolicznego, możesz to zrobić. działa w ubuntu

#!/usr/local/bin/node --harmony

Znacznik harmonii jest przeznaczony dla nowej harmonii ECMAscript


0
  1. uruchom polecenie, which nodewynik będzie coś

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. Skopiuj ścieżkę, którą masz powyżej, a następnie uruchom polecenie w kroku 3.

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node


-1

Musisz nazywać „nodejs”, a nie „node”. Aby to sprawdzić, wpisz node -vw powłoce: jeśli nic nie zostanie znalezione, spróbuj nodejs -v. Jeśli wyświetla numer wersji, to polecenie, którego powinieneś użyć, to, nodejsa nie node. Dlatego musisz zmienić wywołanie browserify w swoim skrypcie z nodena nodejs(jak pokazano poniżej): replace

#!/usr/bin/env node

z

#!/usr/bin/env nodejs

Być może będziesz musiał otworzyć skrypt jako superużytkownik.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.