Eu escrevi meu primeiro aplicativo node.js, mas ele não consegue encontrar a biblioteca expressa:
C:\ChatServer\Server>node server.js
module.js:340
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Mas express é instalado (com -g
chave):
C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)
Alguma informação:
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>node --version
v0.10.9
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
Como posso resolver este problema? ( DEVO instalá-lo sem -g
?)
Respostas:
Você precisa instalar o Express localmente no contexto do seu aplicativo (
node_modules
pasta):A razão para isso é que os aplicativos sempre procuram em seu contexto local quaisquer dependências. A instalação global é apenas para configurar binários disponíveis em todo o sistema, como executores de teste de unidade ou bootstrappers ou coisas assim.
Com o Express, quando você o instala globalmente, você obtém um
express
binário que pode inicializar um aplicativo para você. Para mais informações, digitePortanto, para responder à sua pergunta final: SIM , você precisa instalá-lo sem
-g
.fonte
winston
instalado globalmente, o que funcionou por algum motivo ao iniciar o aplicativo como um usuário normal, mas ao iniciar o aplicativo e um script de inicialização do sistema, ele não funcionou. Corrigi-o instalando o winston localmente no diretório do aplicativo (e adicionando-o ao package.json).Para mim, funcionou quando instalado expresso localmente com a opção --save da seguinte forma:
fonte
Verifique se você não é um
express
módulo de instalação , use este comando:e se seu
node_modules
diretório estiver em outro local, defina aNODE_PATH
variável de ambiente:fonte
O Golo explicou bem a solução, mas posso acrescentar um esclarecimento:
às vezes os módulos do nó são instalados no
e quando você inicia o nó blabla.js, os módulos são pesquisados em
Portanto, uma solução é criar um link simbólico:
fonte
No seu caso, seu
express
módulo está instalado emC:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
, mas você precisa colocá-lo no diretório do projeto. Portanto, você deve copiar o arquivo dasexpress
pastas do módulo deC:\Users\Dmitry\AppData\Roaming\npm\node_modules\
para o diretório do projeto como:C:\ChatServer\Server\node_modules
. Se você não possui uma pasta chamada 'node_modules' na pasta do projeto, crie-a primeiro e cole esses arquivos nessa pasta. Este método funcionou para mim no meu pc windows. Reinicie o servidor do nó e execute novamente o nó do comandoC:\ChatServer\Server>node server.js
. Deve funcionar agora !!!!fonte
No sistema operacional baseado no Ubuntu, você pode tentar
está trabalhando para mim no Mint
fonte
Como você instalou o nó no seu sistema, instale o Express localmente para o seu projeto usando o seguinte no Windows:
ou
Você pode conceder acesso global usando:
fonte
Eu tive esse erro no vscode, embora os módulos estejam instalados. Estou usando texto datilografado e expresso. Nos
server.ts
arquivos, todas as importações tinham sublinhados vermelhos e ondulados. Acontece que eu tinha umtsconfig.json
arquivo com defeito .fonte
crie uma pasta no seu disco rígido, por exemplo, sample1 e vá para o prompt de comando, digite: cd e forneça o caminho da pasta sample1 e, em seguida, instale todos os módulos ...
e então o que você estiver criando, salve na pasta sample1
tente...
fonte
acesse o diretório do aplicativo e instale o módulo express usando o comando abaixo npm install express --save e liste o módulo all install usando o comando abaixo npm ls, você verá todos os módulos de instalação local.
fonte
a instalação do express globalmente não funcionará no seu projeto local; portanto, é necessário instalá-lo localmente para uso.
Espero que isso funcione
Obrigado
fonte
Eu bati o mesmo problema. Eu tinha o express instalado globalmente em / usr / local / bin /. Quando eu instalo o 'npm', o express não foi criado no node_modules do diretório local.
fonte
Isso funcionou para mim no MacOS X Sierra
fonte
Não tenho orgulho de compartilhar isso, mas no meu caso eu tinha:
fonte
Eu tive o mesmo erro seguindo o exemplo deste livro: "Kubernetes Up & Running".
Vejo muitas respostas sugerindo a instalação expressa "à mão", mas não estou convencido de que é a melhor solução.
Como estamos usando o package.json (posso vê-lo nos logs) e a maneira correta de criar o aplicativo está sendo executada
npm install
, adicionei a dependência expressa no arquivo package.json .Eu recebo a versão atual com
npm search express
.fonte