Nie znaleziono polecenia Gulp po instalacji

97

Zainstalowałem gulp (globalnie) i wygląda na to, że zadziałało, ponieważ uruchomił ten kod:

├── tildify@0.2.0
├── interpret@0.3.5
├── pretty-hrtime@0.2.1
├── deprecated@0.0.1
├── archy@0.0.2
├── minimist@0.2.0
├── semver@2.3.2
├── orchestrator@0.3.7 (stream-consume@0.1.0, sequencify@0.0.7, end-of-stream@0.1.5)
├── chalk@0.5.1 (escape-string-regexp@1.0.1, ansi-styles@1.1.0, supports-color@0.2.0, strip-ansi@0.3.0, has-ansi@0.1.0)
├── gulp-util@2.2.20 (lodash._reinterpolate@2.4.1, dateformat@1.0.8-1.2.3, vinyl@0.2.3, through2@0.5.1, multipipe@0.1.1, lodash.template@2.4.1)
├── liftoff@0.12.0 (extend@1.2.1, minimist@0.1.0, resolve@0.7.4, findup-sync@0.1.3)
└── vinyl-fs@0.3.5 (graceful-fs@3.0.2, lodash@2.4.1, mkdirp@0.5.0, strip-bom@0.3.1, vinyl@0.2.3, through2@0.5.1, glob-watcher@0.0.6, glob-stream@3.1.14)

Ale kiedy piszę gulp, mówi-bash: gulp: command not found

Masz jakiś pomysł, co się dzieje?

iluvpinkerton
źródło
4
Aby to rozwiązać, zrobiłem sudo install gulp -g. to zadziałało
Mr_Green
10
Mr_Green oznaczało: sudo npm install gulp -g
jasonleonhard

Odpowiedzi:

174

Okazuje się, że npm został zainstalowany w złym katalogu, więc musiałem zmienić „prefiks konfiguracji npm”, uruchamiając ten kod:

npm config set prefix /usr/local

Następnie ponownie zainstalowałem gulp globalnie (z parametrem -g) i działało poprawnie.

W tym artykule znalazłem rozwiązanie: http://webbb.be/blog/command-not-found-node-npm

iluvpinkerton
źródło
2
Dzięki! Rozwiązał też mój problem :)
bunt
2
Niesamowity. Dziękuję Ci.
Andrew
2
Pomogło mi również rozwiązanie
Sergey Andreev
2
Dzięki, to zadziałało. Bardzo dziwne. Zainstalowałem go na macbooku 1, działa, macbook 2, nie działa, więc muszę to zrobić. Zwariowany.
axelvnk
2
Zastanawiam się, dlaczego StackOverflow nie pokazuje tego jako pierwszej odpowiedzi! Najwyraźniej to właściwy.
Anand Sainath
58

Nie jestem pewien, dlaczego to pytanie zostało odrzucone, ale miałem ten sam problem i po wpisaniu na blogu zalecono rozwiązanie problemu. Powinienem dodać, że w moim przypadku, gdy biegałem:

npm config set prefix /usr/local

I potwierdził, że npm root -gbył wskazując /usr/local/lib/node_modules/npm, ale w celu zainstalowania gulpw /usr/local/lib/node_modules, musiałem użyć sudo:

sudo npm install gulp -g

thehme
źródło
Szukałem tego rozwiązania! DZIĘKUJĘ CI! Polecenie: npm config set prefix /usr/localROZWIĄZANY problem!
północ. Wdech
21

Jeśli używasz tcsh(która jest moją domyślną powłoką w systemie Mac OS X), prawdopodobnie wystarczy wpisać rehashdo powłoki tuż po zakończeniu instalacji:

npm install -g gulp

a zaraz po nim:

rehash

W przeciwnym razie, jeśli jest to Twoja pierwsza instalacja gulp, powłoka może nie rozpoznać, że jest zainstalowany nowy plik wykonywalny - musisz więc albo uruchomić nową powłokę, albo wpisać rehashbieżącą powłokę.

(Jest to w zasadzie jednorazowa czynność dla każdego polecenia instalowanego globalnie).

Steve Goldberg
źródło
17

Zdaję sobie sprawę, że jest to stary wątek, ale w przypadku Future-Me i potomności doszedłem do wniosku, że powinienem dodać swoje dwa centy do dyskusji na temat „uruchomionego npm jako sudo”. Zastrzeżenie: nie używam systemu Windows. Kroki te zostały sprawdzone tylko na maszynach innych niż Windows, zarówno wirtualnych, jak i fizycznych.

Możesz uniknąć konieczności używania sudo, zmieniając uprawnienia na domyślny katalog npm.


Instrukcje: zmiana uprawnień w celu uruchomienia npm bez sudo

Krok 1: Dowiedz się, gdzie jest domyślny katalog npm.

  • Aby to zrobić, otwórz terminal i uruchom:
    npm config get prefix

Krok 2: Kontynuuj, opierając się na wynikach tego polecenia:

  • Scenariusz pierwszy: domyślny katalog npm to /usr/local
    W przypadku większości użytkowników dane wyjściowe pokażą, że domyślnym katalogiem npm jest / usr / local, w takim przypadku można przejść do kroku 4, aby zaktualizować uprawnienia do katalogu.
  • Scenariusz drugi: domyślny katalog npm to /usrlub /Users/YOURUSERNAME/node_moduleslub /Something/Else/FishyLooking
    Jeśli okaże się, że domyślnym katalogiem npm nie jest / usr / local, ale zamiast tego jest to coś, czego nie możesz wyjaśnić lub wygląda podejrzanie, przejdź do kroku 3, aby zmienić domyślny katalog dla npm, lub ryzykujesz zepsucie uprawnień na znacznie większą skalę.

Krok 3: Zmień domyślny katalog npm:

  • Jest na to kilka sposobów, w tym utworzenie katalogu specjalnie dla instalacji globalnych, a następnie dodanie tego katalogu do $ PATH, ale ponieważ / usr / local jest już prawdopodobnie na twojej ścieżce, myślę, że łatwiej jest po prostu zmienić npm domyślny katalog do tego. Tak jak to: npm config set prefix /usr/local
    • Aby uzyskać więcej informacji na temat innych podejść, o których wspomniałem, zobacz dokumentację npm tutaj .

Krok 4: Zaktualizuj uprawnienia w domyślnym katalogu npm:

  • Po sprawdzeniu, że domyślny katalog npm znajduje się w rozsądnej lokalizacji, możesz zaktualizować jego uprawnienia za pomocą polecenia:
    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Teraz powinieneś móc biegać npm <whatever>bez sudo. Uwaga: aby zmiany zaczęły obowiązywać, może być konieczne ponowne uruchomienie terminala.

sgray
źródło
7

Miałem podobny problem, wykonałem następujące kroki i zadziałało.Przejdź do terminala mac i wykonaj polecenia,

1.npm config set prefix / usr / local

2.sudo chown -R $ (whoami) $ (npm config get prefiks) / {lib / node_modules, bin, share}

Te dwa polecenia ustawią właściwą ścieżkę npm i nie musisz już używać sudo w npm. Następnie odinstaluj łyk

  1. npm odinstaluj gulp

  2. Zainstaluj ponownie gulp bez sudo, npm install gulp -g

To powinno działać !!

Atul Kumar
źródło
4

Miałem problem z otrzymaniem komunikatu „polecenie nie znaleziono” po instalacji, ale zostałem zainstalowany w / usr / local, jak opisano w powyższym rozwiązaniu.

Wyglądało na to, że mój problem był spowodowany uruchomieniem instalacji z sudo. Zrobiłem co następuje.

  1. Ponownie usuwam łyk za pomocą sudo
  2. Zmiana właściciela / usr / local / lib / node_modules na mojego użytkownika
  3. Ponowna instalacja gulp bez sudo. „npm install gulp -g”
Zack Huston
źródło
1
Wydaje się bardziej sensowne, że nie muszę niczego instalować lokalnie za pomocą sudo i dlaczego powinienem kiedykolwiek używać sudo - dla mnie, kiedy zaczynam używać sudo, sprawy się psują, gdy nie uruchamiasz wiersza poleceń jako sudo - jak w codzienne programowanie jako użytkownik. Wydaje mi się, że twój sposób jest znacznie bardziej poprawny - sudo nie zawsze jest najlepszą odpowiedzią, chociaż wydaje się, że naprawia się na chwilę.
wylądował
3

Musisz to zrobić npm install --global gulp. U mnie działa i ja też miałem ten problem. To dlatego, że nie zainstalowałeś tego pakietu globalnie.

Sergey Andreev
źródło
3

Jeśli jesteś na komputerze Mac, użyj uprawnień roota

sudo npm install gulp-cli --global

Aby sprawdzić, czy jest zainstalowany, uruchom

gulp -v

Wersja CLI: 2.2.0 (wyjście)

Wersja lokalna: nieznana

Abinet Kenore Getachew
źródło
1

Mam to działając na Win10, używając kombinacji odpowiedzi z góry i gdzie indziej. Publikowanie tutaj dla innych i dla mnie w przyszłości.

Postępowałem zgodnie z instrukcjami tutaj: https://gulpjs.com/docs/en/getting-started/quick-start ale na ostatnim kroku po wpisaniu gulp --version dostałem wiadomość -bash: gulp: command not found

Aby to naprawić:

  1. Dodałem% AppData% \ npm do mojej zmiennej środowiskowej Path
  2. Zamknięto cały gitbash (cmd, powershell itp.) I ponownie uruchomiono gitbash.
  3. Wtedy łyk - wersja zadziałała

Poniżej znalazłem również powody, dla których nie należy instalować gulp na całym świecie i jak go usunąć (nie jestem pewien, czy jest to zalecane):

co oznacza gulp- „cli”?

Jak globalnie odinstalować Gulp CLI z NPM?

Tony Lisanti
źródło
0

W moim przypadku dodanie sudo przed instalacją npm rozwiązane polecenie gulp nie znalazło problemu

sudo npm install

Balram Singh
źródło
0

Jeśli chcesz pozostawić swój prefiks nienaruszony, po prostu wyeksportuj jego bin dir do zmiennej PATH:
export PATH=$HOME/your-path/bin:$PATH
dodałem ten wiersz do mojego $ HOME / .profile i pobrałem go.

Ustawienie prefiksu na /usr/localsprawia, że ​​używasz sudo, więc lubię mieć go w moim katalogu użytkownika. Możesz sprawdzić swój prefiks za pomocą npm prefix -g.

Altair
źródło