node.js: não é possível encontrar o módulo 'pedido'

92

Instalei o módulo de solicitação e recebo o erro:

module.js:340
    throw err;
          ^
Error: Cannot find module 'request'

Li todas as postagens sobre esse erro e entendo que isso ocorre porque as solicitações de módulo não foram encontradas globalmente, mas já tentei as 2 sugestões

pedido de instalação npm -g

isso deve instalá-lo em / usr / loca / bin? porque eu não vejo isso lá.

e

link sudo npm

/ usr / local / lib / node_modules / request -> / Users / soulsonic / dev / sandbox / node_test / request

Eu reiniciei o terminal após cada comando, mas continuo recebendo o erro de módulo não consegue encontrar.

atualizar

deve ter havido algum tipo de conflito em meu diretório inicial, porque "npm install request" não estava adicionando "request" em node_modules (há 10 outros lá) .. depois de mudar para um novo diretório, ele simplesmente funcionou.

se eu executá-lo com o switch -g, vejo que está sendo instalado em / usr / local / lib / node_modules / request.

Parece que eu só preciso atualizar meu perfil para que o caminho acima seja adicionado automaticamente.

Sonic Soul
fonte

Respostas:

171

Vá para o diretório do seu projeto

mkdir TestProject
cd TestProject

Faça deste diretório a raiz do seu projeto (isso criará um package.jsonarquivo padrão )

npm init --yes

Instale o módulo npm necessário e salve-o como uma dependência do projeto (ele aparecerá em package.json)

npm install request --save

Crie um test.jsarquivo no diretório do projeto com o código do exemplo de pacote

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body); // Print the google web page.
  }
});

O diretório do seu projeto deve ser semelhante a este

TestProject/
- node_modules/
- package.json
- test.js

Agora basta executar o nó dentro do diretório do seu projeto

node test.js
Glukki
fonte
1
sim, esse é exatamente o exemplo que segui. e eu executo o instalador npm 10 vezes agora .. em meu projeto de teste e usando o sinalizador -g. posso ver node_modules em meu diretório de teste, mas a solicitação não está lá .. continua a me dar esse erro ..
Sonic Soul
porque, embora eu tenha algum conflito estranho, esses são os passos certos a seguir. funcionou assim que fiz isso novamente em um novo diretório. Eu adicionei uma atualização sobre o que aconteceu comigo que provavelmente será raro para os outros
Sonic Soul
32

Você deve simplesmente instalar request localmente em seu projeto.

cdaté a pasta que contém seu arquivo js e execute

npm install request
SLaks
fonte
após "npm install request", copiei meu app.js para a pasta request e tentei executar a partir daí com o mesmo resultado. e precisarei usá-lo em mais de um projeto.
Sonic Soul de
@SonicSoul: Você está entendendo mal como os pacotes de nós funcionam. require('request')olha ./node_modules/request, e é aí que o npm installcoloca. Você deve executar a npm installpartir do diretório raiz de cada aplicativo e nunca deve tocar na node_modulespasta por conta própria.
SLaks de
antes de correr npm install request, você deve correr npm init. Siga as instruções que criarão um package.jsonna pasta do seu projeto. Em seguida, execute o npm install -S requestque instalará o módulo de solicitação na pasta node_modules e também adicionará a solicitação ao arquivo package.json
Noah
@SLaks significa que toda vez que instalo algum pacote, preciso entrar em sua pasta raiz e executar npm install? para todos eles?
Drumnbass
@Drumnbass: Não. npm installInstala todas as dependências também.
SLaks
16

Tive o mesmo problema, pra mim npm install request --save resolveu o problema. Espero que ajude.


fonte
1

Eu estava tendo o mesmo problema, aqui está como eu fiz isso funcionar ..

terminal aberto:

mkdir testExpress
cd testExpress
npm install request

ou

sudo npm install -g request // If you would like to globally install.

agora não use

app.jsou nó test.js, você terá esse problema ao fazer isso. Você também pode imprimir o problema que está sendo causado usando este comando."node -p app.js"

O comando acima para iniciar nodeJs foi descontinuado. Em vez de usar

npm start

Você deveria ver isso ..

testExpress@0.0.0 start /Users/{username}/testExpress
node ./bin/www

Abra seu navegador da web e verifique se há localhost: 3000

Você deve ver a instalação Expressa (Bem-vindo ao Express)

Rakesh Chouhan
fonte
1

Eu encontrei o mesmo problema ao instalá-lo globalmente, tentei instalá-lo localmente e funcionou.

Jeorge Washington
fonte
1

se algum módulo que você não consegue encontrar, tente com URI estático, por exemplo:

var Mustache = require("/media/fabio/Datos/Express/2_required_a_module/node_modules/mustache/mustache.js");

Este exemplo, executado no Ubuntu Gnome 16.04 de 64 bits, node -v: v4.2.6, npm: 3.5.2 Consulte: Blog de Ben Nadel

Fabio Andres Pino Gutierrez
fonte
0

ReferenceError: Não é possível encontrar a variável: requerem.

Você instalou "npm", você pode executar normalmente o script para um "localhost" "127.0.0.1".

Quando você usa o http.clientRequest () com "options" em um "npm" você precisa instalar o "RequireJS" dentro do módulo.

Um módulo é qualquer arquivo ou diretório no diretório node_modules que pode ser carregado pelo Node. Instale o "RequiereJS" para fazer funcionar o http.clientRequest (opções).

Roberto Aprea
fonte
0

Tentei instalar o módulo localmente com a versão e funcionou !!

npm install request@^2.*

Obrigado.

shamnas cv
fonte