Nie znaleziono polecenia ekspresowego

137

Z jakiegoś powodu po globalnej instalacji Express na moim komputerze, npm install -g expressjeśli wejdę cddo katalogu i spróbuję uruchomić Express, pojawia się następujący błąd:

express: command not found. 

Nawet jeśli uruchomię go z sudo, nadal otrzymuję ten sam wynik. Próbowałem wielu różnych rozwiązań tego problemu i nic nie działało. Zainstalowałem węzeł, przez homebrewktóry niektóre wątki w Stack Overflow wskazywały, że mogą stanowić problem, więc całkowicie odinstalowałem węzeł i ponownie zainstalowałem go za pomocą instalatora na nodejs.org (teraz używam wersji0.10.26), a problem nadal występuje.

Jeśli wejdę do mojego /usr/local/lib/node_modulesExpressu, jest tam, ale w / usr / local / bin nie ma nic na temat Express. Nie jestem pewien, czy to jest problem, czy nie, ale biorąc pod uwagę, że w tym katalogu są pliki binarne dla innych globalnie zainstalowanych pakietów węzłów, myślę, że może tam być coś nie tak.

Oto dokładny wynik, jaki otrzymuję podczas instalacji:

npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/accepts/1.0.0
npm http GET https://registry.npmjs.org/type-is/1.0.0
npm http GET https://registry.npmjs.org/range-parser/1.0.0
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/fresh/0.2.2
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/send/0.2.0
npm http GET https://registry.npmjs.org/methods/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.3
npm http GET https://registry.npmjs.org/utils-merge/1.0.0
npm http GET https://registry.npmjs.org/merge-descriptors/0.0.2
npm http GET https://registry.npmjs.org/escape-html/1.0.1
npm http GET https://registry.npmjs.org/serve-static/1.0.1
npm http GET https://registry.npmjs.org/qs/0.6.6
npm http GET https://registry.npmjs.org/path-to-regexp/0.1.2
npm http GET https://registry.npmjs.org/parseurl/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/type-is/1.0.0
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/methods/0.1.0
npm http 304 https://registry.npmjs.org/accepts/1.0.0
npm http 304 https://registry.npmjs.org/range-parser/1.0.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.3
npm http 304 https://registry.npmjs.org/fresh/0.2.2
npm http 304 https://registry.npmjs.org/serve-static/1.0.1
npm http 304 https://registry.npmjs.org/qs/0.6.6
npm http 304 https://registry.npmjs.org/utils-merge/1.0.0
npm http 304 https://registry.npmjs.org/merge-descriptors/0.0.2
npm http 304 https://registry.npmjs.org/escape-html/1.0.1
npm http 304 https://registry.npmjs.org/path-to-regexp/0.1.2
npm http 304 https://registry.npmjs.org/parseurl/1.0.1
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/send/0.2.0
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/send/0.1.4
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/negotiator
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/send/0.1.4
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/fresh/0.2.0
npm http 304 https://registry.npmjs.org/negotiator
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/fresh/0.2.0
express@4.0.0 /usr/local/lib/node_modules/express
├── methods@0.1.0
├── parseurl@1.0.1
├── utils-merge@1.0.0
├── merge-descriptors@0.0.2
├── escape-html@1.0.1
├── debug@0.8.0
├── cookie-signature@1.0.3
├── range-parser@1.0.0
├── fresh@0.2.2
├── qs@0.6.6
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── path-to-regexp@0.1.2
├── type-is@1.0.0 (mime@1.2.11)
├── send@0.2.0 (mime@1.2.11)
├── serve-static@1.0.1 (send@0.1.4)
└── accepts@1.0.0 (negotiator@0.3.0, mime@1.2.11)
Tony Barsotti
źródło

Odpowiedzi:

359

Wygląda na to, że wraz z wydaniem Express 4.0.0 musisz to zrobić sudo npm install -g express-generator.

PeterVC
źródło
3
To zadziałało, wielkie dzięki za pomoc! Byłam gotowa wyrywać włosy ostatniej nocy.
Tony Barsotti
2
sudo nie jest wymagane dla uzasadnionej wzmianki i nadal będzie działać. stackoverflow.com/questions/4938592/…
StanleyZheng
4
Bummer, nawet oficjalna dokumentacja o tym nie wspomina. ;-)
Azat
Jak to znalazłeś, jeśli nie ma tego w dokumentacji, jak mamy się o tym dowiedzieć?
Startec
1
Wspomina o tym oficjalna dokumentacja FWIW [teraz?] - expressjs.com/starter/generator.html
Steven R. Loomis
34

Musisz biegać:

npm install -gd express-generator

Oryginalny ekspres z CLI, teraz CLI podzielony na oddzielny pakiet ekspresowy-generator. Oryginalnie wygenerowany przez projekt działa aplikacja Express node app.js, ponieważ httpserver odpowiedni kod w app.js, a teraz ta część kodu do katalogu projektu bin/wwwponiżej, app.js zachowują tylko kod logiki aplikacji, musisz uruchomić bin/www. Po prostu bardzo prosta aplikacja i zmiany wersji zależności pakietu udoskonalenia.

łza
źródło
2

Miałem to wyzwanie przez kilka dni. Po głębokich poszukiwaniach dowiedziałem się, że każdy dostępny zasób należy czytać, zwłaszcza z nadrzędnego źródła [w tym przypadku EXPRESSJS.COM]. Oto szybkie rozwiązanie.

Począwszy od wersji 4.0+, nie musisz koniecznie instalować ekspresowego generatora, jeśli używasz Node 8.2+. Po prostu biegnij

npx express-generator

Generator ekspresowy będzie działał tak, jak działa, gdy uruchomisz:express

Aby uzyskać więcej informacji, zobacz Pierwsze kroki

Miłego czytania i godzin badań.

HilmaStac
źródło
1

Ostatnio próbowałem zainstalować generator ekspresowy, ale dałby się,

$ zsh : command not found : express

To było po tym, jak to zrobiłem

$ sudo npm install -g express
$ sudo npm install -g express-generator

Ale potem zobaczyłem dziennik konsoli polecenia instalacji npm

/usr/local/Cellar/node/13.1.0/bin/express -> /usr/local/Cellar/node/13.1.0/lib/node_modules/express-generator/bin/express-cli.js

co dało wskazówkę, że plik wykonywalny znajduje się w folderze bin.

Tak więc rozwiązanie jest następujące: Otwórz ~ / .zshrc lub ~ / .bashrc i wyeksportuj ścieżkę w następujący sposób:

export PATH=/usr/local/Cellar/node/13.1.0/bin:$PATH

To teraz działa.

TheSYNcoder
źródło