node.js: Modul 'Anfrage' kann nicht gefunden werden

91

Ich habe das Anforderungsmodul installiert und den Fehler erhalten:

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

Ich habe alle Beiträge zu diesem Fehler gelesen und verstehe, dass dies daran liegt, dass Modulanforderungen nicht global gefunden werden, aber ich habe die beiden Vorschläge bereits ausprobiert

npm Installationsanforderung -g

sollte dies in / usr / loca / bin installiert werden? weil ich es dort nicht sehe.

und

sudo npm link

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

Ich habe das Terminal nach jedem Befehl neu gestartet, bekomme aber immer wieder den Fehler "Modul kann nicht gefunden werden".

aktualisieren

Es muss einen Konflikt in meinem ursprünglichen Verzeichnis gegeben haben, da "npm install request" unter "node_modules" keine "request" hinzugefügt hat (dort sind 10 andere). Nach dem Wechsel in ein neues Verzeichnis hat es einfach funktioniert.

Wenn ich es mit dem Schalter -g ausführe, wird es in / usr / local / lib / node_modules / request installiert.

Es scheint, dass ich nur mein Profil aktualisieren muss, damit der obige Pfad automatisch hinzugefügt wird.

Sonic Soul
quelle

Antworten:

169

Gehen Sie zum Verzeichnis Ihres Projekts

mkdir TestProject
cd TestProject

Machen Sie dieses Verzeichnis zu einem Stammverzeichnis Ihres Projekts (dadurch wird eine Standarddatei package.jsonerstellt).

npm init --yes

Installieren Sie das erforderliche npm-Modul und speichern Sie es als Projektabhängigkeit (es wird in angezeigt package.json).

npm install request --save

Erstellen Sie eine test.jsDatei im Projektverzeichnis mit Code aus dem Paketbeispiel

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

Ihr Projektverzeichnis sollte so aussehen

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

Führen Sie jetzt einfach den Knoten in Ihrem Projektverzeichnis aus

node test.js
Glukki
quelle
1
Ja, das ist genau das Beispiel, dem ich gefolgt bin. und ich führe das npm-Installationsprogramm jetzt 10 Mal aus .. in meinem Testprojekt und mit dem Flag -g. Ich kann node_modules in meinem Testverzeichnis sehen, aber die Anfrage ist nicht da. Es gibt mir weiterhin diesen Fehler.
Sonic Soul
denn obwohl ich einen seltsamen Konflikt hatte, sind dies die richtigen Schritte. es hat funktioniert, als ich es wieder in einem neuen Verzeichnis gemacht habe. Ich habe ein Update hinzugefügt, was mit mir passiert ist, was für andere wahrscheinlich selten sein wird
Sonic Soul
31

Sie sollten einfach request lokal in Ihrem Projekt installieren .

Einfach cdin den Ordner mit Ihrer js-Datei und ausführen

npm install request
SLaks
quelle
Nach "npm install request" habe ich meine app.js in den Anfrageordner kopiert und versucht, von dort aus mit dem gleichen Ergebnis zu laufen. und ich werde es aus mehr als nur einem Projekt verwenden müssen.
Sonic Soul
@SonicSoul: Sie verstehen falsch, wie Knotenpakete funktionieren. require('request')schaut hinein ./node_modules/requestund das npm installbringt es auf den Punkt. Sie sollten npm installaus dem Stammverzeichnis jeder App ausgeführt werden und den node_modulesOrdner niemals selbst berühren .
SLaks
Bevor Sie laufen npm install request, sollten Sie laufen npm init. Befolgen Sie die Anweisungen, die package.jsonin Ihrem Projektordner erstellt werden. Führen Sie dann aus, npm install -S requestwodurch sowohl das Anforderungsmodul im Ordner node_modules installiert als auch eine Anforderung zu Ihrer Datei package.json hinzugefügt wird
Noah,
@SLaks bedeutet das, dass ich jedes Mal, wenn ich ein Paket installiere, es in seinen Stammordner eingeben und ausführen muss npm install? für alle?
Drumnbass
@Drumnbass: Nein. Installiert auch npm installalle Abhängigkeiten.
SLaks
14

Ich hatte das gleiche Problem, für mich npm install request --save löste das Problem. Ich hoffe es hilft.


quelle
1

Ich hatte das gleiche Problem. Hier ist, wie ich es zum Laufen gebracht habe.

offenes Terminal:

mkdir testExpress
cd testExpress
npm install request

oder

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

jetzt nicht benutzen

Knoten app.jsoder Knoten test.js, Sie werden auf dieses Problem stoßen , wenn Sie dies tun. Mit diesem Befehl können Sie auch das Problem drucken, das verursacht wird."node -p app.js"

Der obige Befehl zum Starten von nodeJs ist veraltet. Verwenden Sie stattdessen

npm start

Sie sollten dies sehen ..

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

Öffnen Sie Ihren Webbrowser und suchen Sie nach localhost: 3000

Sie sollten Express installieren sehen (Willkommen bei Express)

Rakesh Chouhan
quelle
1

Ich habe das gleiche Problem wie bei der globalen Installation festgestellt. Dann versuche ich, es lokal zu installieren, und es funktioniert.

Jeorge Washington
quelle
1

Wenn Sie ein Modul nicht finden können, versuchen Sie es mit statischem URI, zum Beispiel:

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

Dieses Beispiel läuft unter Ubuntu Gnome 16.04 mit 64 Bit, Knoten -v: v4.2.6, npm: 3.5.2. Siehe: Blog von Ben Nadel

Fabio Andres Pino Gutierrez
quelle
0

ReferenceError: Variable kann nicht gefunden werden: erforderlich.

Wenn Sie "npm" installiert haben, können Sie das Skript wie gewohnt auf einem "localhost" "127.0.0.1" ausführen.

Wenn Sie http.clientRequest () mit "Optionen" in einem "npm" verwenden, müssen Sie "RequireJS" im Modul installieren.

Ein Modul ist eine Datei oder ein Verzeichnis im Verzeichnis node_modules, die bzw. das vom Knoten geladen werden kann. Installieren Sie "RequiereJS", damit http.clientRequest (Optionen) funktioniert.

Roberto Aprea
quelle
0

Ich habe versucht, das Modul lokal mit Version zu installieren und es hat funktioniert !!

npm install request@^2.*

Vielen Dank.

shamnas cv
quelle