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.

Sonic Soul
źródło

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
glukki
źródło
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
SLaks
źródło
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.


źródło
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)

Rakesh Chouhan
źródło
1

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

Jeorge Washington
źródło
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

Fabio Andres Pino Gutierrez
źródło
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).

Roberto Aprea
źródło
0

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

npm install request@^2.*

Dzięki.

shamnas cv
źródło