Comando expresso não encontrado

137

Por algum motivo, depois de instalar o Express globalmente em minha máquina, npm install -g expressse eu estiver cdem um diretório e tentar executar o Express, recebo o seguinte erro:

express: command not found. 

Mesmo se eu executá-lo sudo, ainda recebo a mesma saída. Eu tentei várias soluções diferentes para esse problema e nada funcionou. Eu instalei o nó através do homebrewqual alguns threads no Stack Overflow indicaram que poderia haver um problema, então desinstalei completamente o nó e reinstalei através do instalador no nodejs.org (agora estou executando a v0.10.26) e o problema ainda persiste.

Se eu entrar no meu /usr/local/lib/node_modules Express está lá, mas dentro de / usr / local / bin, não há nada sobre o Express. Não tenho certeza se isso é um problema ou não, mas considerando que existem binários para outros pacotes de nós instalados globalmente nesse diretório, acho que pode haver algo errado lá.

Esta é a saída exata que recebo quando instalo:

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
fonte

Respostas:

359

Com o lançamento do Express 4.0.0, parece que você precisa fazer sudo npm install -g express-generator.

PeterVC
fonte
3
Isso funcionou muito obrigado por sua ajuda! Eu estava pronto para puxar meu cabelo nessa noite passada.
Tony Barsotti
2
O sudo não é necessário pelos motivos mencionados e ainda funcionará. stackoverflow.com/questions/4938592/…
StanleyZheng
4
Que chatice, nem mesmo a documentação oficial menciona isso. ;-)
Azat
Como você o encontrou, se isso não está na documentação, como devemos aprender sobre isso?
Startec 23/07
1
Os documentos oficiais do FWIW mencionam isso [agora?] - expressjs.com/starter/generator.html
Steven R. Loomis
34

Você precisa executar:

npm install -gd express-generator

O expresso original com cli, agora o cli se divide em um pacote separado de gerador de expresso. Originalmente gerado pelo projeto, ele está executando o nó expresso app.js, porque o código relevante para httpserver em app.js e agora essa parte do código no diretório do projeto bin/wwwabaixo, app.js retém apenas o código lógico do aplicativo, é necessário executar o bin/www. Apenas uma versão muito simples da versão de dependência de pacotes de aplicativos e refinamentos é alterada.

lágrima
fonte
2

Eu estava tendo esse desafio por vários dias. Após uma pesquisa profunda, aprendi que é preciso ler todos os recursos disponíveis, especialmente da fonte pai [neste caso, EXPRESSJS.COM]. Aqui está uma solução rápida.

A partir da versão 4.0+, você não precisa necessariamente instalar o express-generator se estiver executando o Node 8.2+. Simplesmente corra

npx express-generator

O gerador expresso será executado da mesma maneira que você executa:express

Para mais detalhes, consulte Introdução.

Boas horas de leitura e pesquisa.

HilmaStac
fonte
1

Estive recentemente tentando instalar o gerador expresso, mas isso daria,

$ zsh : command not found : express

Foi depois que eu fiz

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

Mas então, eu vi o log do console do commmand de instalação do 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

que deu uma dica de que o expresso executável está na pasta bin.

Portanto, a solução é: Abra ~ / .zshrc ou ~ / .bashrc e exporte o caminho da seguinte maneira:

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

Funciona agora.

TheSYNcoder
fonte