node.js: nie można znaleźć modułu „request”


92

Zainstalowałem moduł request i otrzymuję błąd:

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

Przeczytałem wszystkie posty dotyczące tego błędu i rozumiem, że dzieje się tak, ponieważ żądania modułów nie zostały znalezione na całym świecie, ale wypróbowałem już 2 sugestie

npm żądanie instalacji -g

czy powinno to zainstalować go w / usr / loca / bin? ponieważ tego tam nie widzę.

i

link sudo npm

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

Zrestartowałem terminal po każdym poleceniu, ale wciąż otrzymuję błąd nie można znaleźć modułu.

aktualizacja

musiał istnieć jakiś konflikt w moim katalogu początkowym, ponieważ "żądanie instalacji npm" nie dodawało "żądania" pod node_modules (jest tam 10 innych) .. po przełączeniu do nowego katalogu po prostu zadziałało.

jeśli uruchomię go z przełącznikiem -g, zobaczę, że jest on zainstalowany w / usr / local / lib / node_modules / request.

wygląda na to, że muszę tylko zaktualizować mój profil, aby powyższa ścieżka została automatycznie dodana.

Odpowiedzi:


171

Przejdź do katalogu swojego projektu

mkdir TestProject
cd TestProject

Ustaw ten katalog jako katalog główny twojego projektu (spowoduje to utworzenie domyślnego package.jsonpliku)

npm init --yes

Zainstaluj wymagany moduł npm i zapisz go jako zależność projektu (pojawi się w package.json)

npm install request --save

Utwórz test.jsplik w katalogu projektu z kodem z przykładu pakietu

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

Twój katalog projektu powinien wyglądać tak

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

Teraz po prostu uruchom węzeł w katalogu projektu

node test.js

1
tak, to jest dokładnie ten przykład, który poszedłem. i uruchamiam teraz instalator npm 10 razy .. w moim projekcie testowym i używając flagi -g. widzę node_modules w moim katalogu testowym, ale nie ma tam żądania .. nadal wyświetla mi ten błąd ..
— Sonic Soul

ponieważ mimo że miałem jakiś dziwny konflikt, są to właściwe kroki. zadziałało, gdy zrobiłem to ponownie w nowym katalogu. Dodałem aktualizację o tym, co mi się przydarzyło, co prawdopodobnie będzie rzadkością dla innych
— Sonic Soul

32

Należy po prostu zainstalować request lokalnie w swoim projekcie.

Po prostu cddo folderu zawierającego plik js i uruchom

npm install request

po „żądaniu instalacji npm” skopiowałem plik app.js do folderu żądań i próbowałem go uruchomić z takim samym wynikiem. i będę musiał go używać z więcej niż jednego projektu.
— Sonic Soul

@SonicSoul: Nie rozumiesz, jak działają pakiety węzłów. require('request')zagląda do środka ./node_modules/requesti właśnie tam npm installto umieszcza. Powinieneś uruchomić npm installz katalogu głównego każdej aplikacji i nigdy nie powinieneś node_modulessamodzielnie dotykać folderu.
— SLaks

przed biegiem npm install requestpowinieneś biec npm init. Postępuj zgodnie z instrukcjami, które spowodują utworzenie package.jsonw folderze projektu. Następnie uruchom, npm install -S requestktóry zarówno zainstaluje moduł żądania w folderze node_modules, jak i doda żądanie do pliku package.json
— Noah

@SLaks czy to oznacza, że ​​za każdym razem, gdy instaluję pakiet, muszę wejść do jego folderu głównego i wykonać npm install? dla nich wszystkich?
— Drumnbass

@Drumnbass: No. npm installinstaluje również wszystkie zależności.
— SLaks

16

Miałem ten sam problem, npm install request --save rozwiązałem problem. Mam nadzieję, że to pomoże.


1

Miałem ten sam problem, oto jak to działa.

otwarty terminal:

mkdir testExpress
cd testExpress
npm install request

lub

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

teraz nie używaj

węzeł app.jslub węzeł test.js, napotkasz ten problem, robiąc to. Możesz również wydrukować problem, który jest przyczyną, za pomocą tego polecenia."node -p app.js"

Powyższe polecenie uruchomienia nodeJs jest przestarzałe. Zamiast tego użyj

npm start

Powinieneś to zobaczyć ...

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

Otwórz przeglądarkę internetową i sprawdź localhost: 3000

Powinieneś zobaczyć instalację ekspresową (witamy w Express)


1

Napotkałem ten sam problem, gdy instaluję go globalnie, potem próbuję zainstalować go lokalnie i działa.


1

jeśli jakiegoś modułu nie możesz znaleźć, spróbuj ze statycznym identyfikatorem URI, na przykład:

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

Ten przykład działa na Ubuntu Gnome 16.04 z 64 bitami, węzeł -v: v4.2.6, npm: 3.5.2 Zobacz: Blog Bena Nadela


0

ReferenceError: Can't find variable: require.

Zainstalowałeś "npm", możesz normalnie uruchomić skrypt na "localhost" "127.0.0.1".

Kiedy używasz http.clientRequest () z "opcjami" w "npm", musisz zainstalować "RequireJS" wewnątrz modułu.

Moduł to dowolny plik lub katalog w katalogu node_modules, który może zostać załadowany przez węzeł. Zainstaluj „RequiereJS”, aby wykonać http.clientRequest (opcje).


0

Próbowałem zainstalować moduł lokalnie z wersją i zadziałało !!

npm install request@^2.*

Dzięki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.