Comando rapido non trovato


137

Per qualche motivo dopo aver installato Express a livello globale sul mio computer con npm install -g expressse cdin una directory e provo a eseguire express ottengo il seguente errore:

express: command not found. 

Anche se lo eseguo, sudoottengo sempre lo stesso output. Ho provato diverse soluzioni a questo problema e nulla ha funzionato. Avevo installato il nodo tramite il homebrewquale alcuni thread su Stack Overflow indicato potevano essere un problema, quindi ho disinstallato completamente il nodo e reinstallato tramite il programma di installazione su nodejs.org (sto eseguendo v0.10.26) e il problema persiste ancora.

Se entro nel mio /usr/local/lib/node_modulesExpress c'è dentro ma dentro / usr / local / bin non c'è nulla riguardo Express. Non sono sicuro che si tratti di un problema o meno, ma considerando che ci sono binari per altri pacchetti di nodi installati a livello globale in quella directory, penso che ci possa essere qualcosa di sbagliato lì.

Questo è l'output esatto che ottengo quando installo:

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)

Risposte:


359

Con il rilascio di Express 4.0.0 sembra che tu debba farlo sudo npm install -g express-generator.


3
Questo ha funzionato grazie mille per il tuo aiuto! Ero pronto a togliermi i capelli durante l'ultima notte.
Tony Barsotti,

2
sudo non è richiesto per i motivi indicati e funzionerà comunque. stackoverflow.com/questions/4938592/...
StanleyZheng

4
Peccato, nemmeno la documentazione ufficiale lo menziona. ;-)
Azat,

Come l'hai trovato, se questo non è nella documentazione, come dovremmo conoscerlo?
Startec,

1
I documenti ufficiali FWIW ne parlano [ora?] - expressjs.com/starter/generator.html
Steven R. Loomis

34

Devi eseguire:

npm install -gd express-generator

L'express originale con cli, ora il cli si è diviso in un pacchetto express-generator separato. Originariamente generato dal progetto sta eseguendo il nodo express app.js, poiché il codice httpserver in app.js e ora questa parte del codice nella directory di progetto in bin/wwwbasso, app.js mantiene solo il codice logico dell'app, è necessario eseguire il bin/www. Modifiche alla versione di dipendenza del pacchetto di applicazione e perfezionamento molto semplici.


2

Ho avuto questa sfida per diversi giorni. Dopo una ricerca approfondita, ho appreso che bisogna leggere tutte le risorse disponibili soprattutto dalla fonte principale [in questo caso EXPRESSJS.COM]. Ecco una soluzione rapida.

A partire dalla versione 4.0+ non è necessario installare express-generator se si esegue Node 8.2+. Corri semplicemente

npx express-generator

Express-Generator funzionerà esattamente come viene eseguito quando si esegue:express

Per maggiori dettagli, vedi Introduzione

Buona lettura e ore di ricerca.


1

Di recente ho provato a installare express-generator, tuttavia mi avrebbe dato,

$ zsh : command not found : express

È stato dopo che l'ho fatto

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

Ma poi, ho visto il registro della console del comando npm install

/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

che ha suggerito che l'eseguibile express si trova nella cartella bin.

Quindi la soluzione è: aprire ~ / .zshrc o ~ / .bashrc ed esportare il percorso come segue:

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

Ora funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.