node.js: no se puede encontrar el módulo 'solicitud'

92

Instalé el módulo de solicitud y recibí el error:

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

He leído todas las publicaciones sobre este error y entiendo que esto se debe a que las solicitudes de módulos no se encuentran globalmente, pero ya probé las 2 sugerencias

solicitud de instalación npm -g

¿Debería instalarlo en / usr / loca / bin? porque no lo veo ahí.

y

enlace sudo npm

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

Reinicié el terminal después de cada comando, pero sigo recibiendo el error de módulo No se puede encontrar.

actualizar

debe haber habido algún tipo de conflicto en mi directorio inicial, porque "npm install request" no estaba agregando "request" debajo de node_modules (hay otros 10 allí) .. después de cambiar a un nuevo directorio, simplemente funcionó.

si lo ejecuto con el interruptor -g, veo que está instalado en / usr / local / lib / node_modules / request.

parece que solo necesito actualizar mi perfil para que la ruta anterior se agregue automáticamente.

Sonic Soul
fuente

Respuestas:

171

Ir al directorio de su proyecto

mkdir TestProject
cd TestProject

Haga de este directorio una raíz de su proyecto (esto creará un package.jsonarchivo predeterminado )

npm init --yes

Instale el módulo npm requerido y guárdelo como una dependencia del proyecto (aparecerá en package.json)

npm install request --save

Cree un test.jsarchivo en el directorio del proyecto con el código del ejemplo del paquete

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.
  }
});

El directorio de tu proyecto debería verse así

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

Ahora simplemente ejecute el nodo dentro del directorio de su proyecto

node test.js
glukki
fuente
1
sí, ese es exactamente el ejemplo que he seguido. y ahora ejecuto el instalador npm 10 veces ... en mi proyecto de prueba y uso el indicador -g. Puedo ver node_modules en mi directorio de prueba, pero la solicitud no está allí ... continúa dándome ese error ..
Sonic Soul
porque aunque tuve un conflicto extraño, estos son los pasos correctos a seguir. funcionó una vez que lo hice de nuevo en un nuevo directorio. Agregué una actualización sobre lo que me sucedió que probablemente será raro para otros
Sonic Soul
32

Simplemente debe instalarlo request localmente dentro de su proyecto.

Solo cda la carpeta que contiene su archivo js y ejecute

npm install request
SLaks
fuente
después de "solicitud de instalación npm", copié mi app.js a la carpeta de solicitud e intenté ejecutar desde allí con el mismo resultado. y tendré que usarlo en más de un proyecto.
Sonic Soul
@SonicSoul: No entiende cómo funcionan los paquetes de nodos. require('request')mira ./node_modules/request, y ahí es donde lo npm installpone. Debe ejecutar npm installdesde el directorio raíz de cada aplicación y nunca debe tocar la node_modulescarpeta usted mismo.
SLaks
antes de ejecutar npm install request, debe ejecutar npm init. Siga las instrucciones que crearán un package.jsonen la carpeta de su proyecto. Luego, ejecute npm install -S requestlo que instalará el módulo de solicitud en la carpeta node_modules y agregará la solicitud a su archivo package.json
Noah
@SLaks, ¿quiere decir que cada vez que instalo un paquete necesito ingresar en su carpeta raíz y ejecutarlo npm install? ¿para todos ellos?
Drumnbass
@Drumnbass: No. también npm installinstala todas las dependencias.
SLaks
16

Tuve el mismo problema, para mí npm install request --save resolvió el problema. Espero eso ayude.


fuente
1

Estaba teniendo el mismo problema, así es como lo hice funcionar ...

terminal abierta:

mkdir testExpress
cd testExpress
npm install request

o

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

ahora no uses

nodo app.jso nodo test.js, se encontrará con este problema al hacerlo. También puede imprimir el problema que se está causando usando este comando."node -p app.js"

El comando anterior para iniciar nodeJs ha quedado obsoleto. En su lugar use

npm start

Deberías ver esto..

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

Abra su navegador web y busque localhost: 3000

Debería ver Instalación rápida (Bienvenido a Express)

Rakesh Chouhan
fuente
1

Me encontré con el mismo problema al instalarlo globalmente, luego trato de instalarlo localmente y funciona.

Jeorge Washington
fuente
1

si no puede encontrar algún módulo, pruebe con Static URI, por ejemplo:

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

Este ejemplo, ejecute en Ubuntu Gnome 16.04 de 64 bits, nodo -v: v4.2.6, npm: 3.5.2 Consulte: Blog de Ben Nadel

Fabio Andres Pino Gutierrez
fuente
0

ReferenceError: No se puede encontrar la variable: require.

Ha instalado "npm", puede ejecutar normalmente el script en un "localhost" "127.0.0.1".

Cuando usa http.clientRequest () con "opciones" en un "npm", necesita instalar "RequireJS" dentro del módulo.

Un módulo es cualquier archivo o directorio en el directorio node_modules que puede ser cargado por Node. Instale "RequiereJS" para que funcione http.clientRequest (opciones).

Roberto Aprea
fuente
0

¡Intenté instalar el módulo localmente con la versión y funcionó!

npm install request@^2.*

Gracias.

shamnas cv
fuente