node.js, błąd: nie można znaleźć modułu „express”

125

Jestem nowy w Node.js, spróbuj nauczyć się ekspresji, aby zbudować moją pierwszą aplikację internetową. Utknąłem na moim pierwszym przykładowym kodzie i potrzebuję pomocy, aby go uruchomić. Zanim opublikowałem to pytanie, szukałem informacji o przepełnieniu stosu, znalazłem kilka podobnych pytań, ale nadal nie mogłem tego naprawić.

Błąd: nie można znaleźć modułu „express”

Używam systemu Mac OS 10.8.2 . Mam zainstalowany Node.js przy użyciu nvm.

node.js: 0.8.20 ścieżka do węzła: /Users/feelexit/nvm/v0.8.20/bin/node ścieżka do wyrażenia: / Users / feelexit / nvm / node_modules / express

oto mój przykładowy kod: ten plik znajduje się pod adresem:

/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js

var express = require('express');

var app = express();

app.get('/', function(req, res){

    res.send('welcome to express');
});

app.listen(3000);

kiedy próbuję uruchomić to polecenie node index.js

Otrzymuję następujący komunikat o błędzie, pomóż mi to naprawić.

Dziękuję Ci.

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js:1:81)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
feelexits-Mac:node_modules feelexit$ 

Zaktualizuj, aby odpowiedzieć na pytanie Chovy'ego:

feelexits-Mac:~ feelexit$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.2.0
npm ERR! command "/Users/feelexit/nvm/v0.8.20/bin/node" "/Users/feelexit/nvm/v0.8.20/bin/npm" "install"
npm ERR! cwd /Users/feelexit
npm ERR! node -v v0.8.20
npm ERR! npm -v 1.2.11
npm ERR! path /Users/feelexit/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/feelexit/npm-debug.log
npm ERR! not ok code 0
qinking126
źródło
Może to pomoże stackoverflow.com/questions/9133784/ ...
user568109
31
Czy npm install
wpisałeś
1
Czy jesteś pewien, że biblioteka Express znajduje się w Twoim folderze „node_modules”? Możesz także spróbować przenieść plik index.js w górę o jeden katalog do „/ Users / feelexit / WebstormProjects / learnnode /” i pozostawić folder node_modules w spokoju.
Domyślnie
1
Prześlij swój package.jsonplik. Pomoże to w debugowaniu problemu.
Akhil Raina,
@chovy, używam npm install express, aby zainstalować express. co robi tylko "npm install"?
qinking126,

Odpowiedzi:

157

To mówi

 Cannot find module 'express'

Czy masz zainstalowany ekspres? Jeśli nie, uruchom go.

 npm install express

I ponownie uruchom program.

Saurabh Rana
źródło
1
To nie rozwiązuje problemu w moim przypadku. npm install expresspokazuje ten błąd npm ERR! Error: UNKNOWN, symlink '../express/bin/express'. Wydaje się, że jest to głębsza kwestia.
Sliq
Użyj sudo, jeśli nie masz naprawionych uprawnień do katalogu dla npm. W każdym razie lepszym rozwiązaniem jest „instalacja sudo npm”.
Gaurav Gupta,
Dowiązanie symboliczne Błędy często występują, jeśli zainstalowałeś rzeczy globalnie i tak, łącze symboliczne się zepsuło. Spróbuj npm linkodtworzyć odpowiednie
łącze
@Sliq Wypróbowałem Twoje rozwiązanie, ale nie mogę rozwiązać swojego problemu, czy możesz mi pomóc?
VjyV
Nie zapomnij o „I ponownie uruchom program”. W moim przypadku musiałem ponownie uruchomić proces w moim process manager. Nie uruchomił się samoczynnie.
Tadej
42

Po wyrażeniu w terminalu zrób to

 npm install

Aby zainstalować wszystkie zależności.

Następnie możesz wykonać aplikację node, aby uruchomić serwer.

Rachunek
źródło
7
Należy zwrócić uwagę, że wymaga to pliku listy pakietów, np. .Json .. I nie zawsze tak jest.
Pogrindis,
@VjyV w tym samym katalogu, w którym znajduje się plik węzłów .js. Ale powinien mieć plik package.json w katalogu, aby mógł zainstalować wymagane zależności.
Saurabh Rana
34

Sprawdź, czy masz zainstalowany expressmoduł. Jeśli nie, użyj tego polecenia:

npm install express

a jeśli twój node_moduleskatalog jest w innym miejscu, ustaw NODE_PATHzmienną środowiskową:

set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
Reza Ebrahimi
źródło
12
To jest właściwa odpowiedź dla wszystkich publikujących te CTRL+C / CTRL+V npm installodpowiedzi: czy naprawdę myślisz, że ktoś próbowałby uruchomić coś bez sprawdzania, czy jest najpierw zainstalowany? Poważnie ...
Claudio Holanda
3
Wystarczy dodać drobny szczegół: musisz uruchomić polecenie install express w katalogu swojej aplikacji, a nie w folderze instalacyjnym Node.js lub folderze npm w AppData. Ponieważ to jest błąd, który popełniłem, ponieważ myślałem, że to jakiś dodatek do SDK.
Alex
29

 npm install --zapisz express   
To zadziałało dla mnie, po prostu uruchom ponownie instalację express.js.

Bonface Ochieng
źródło
11

npm install z katalogu aplikacji rozwiąże problem, ponieważ zainstaluje wszystko, co wymagane

Eldad
źródło
5

Wykopuję tutaj stary wątek, ALE miałem ten sam błąd i rozwiązałem go, przechodząc do katalogu, w którym znajduje się mój NodeApp i działając npm install -d

Wjdavis5
źródło
Nie wiem, dlaczego i jak to ma znaczenie, ale to instaluje go w twoich devdependencies: docs.npmjs.com/cli/install
Guy Lowe
1
@GuyLowe -dto debugowanie dla npm, -Dto zależności dev.
John Pavek,
4

O ile nie ustawisz Node_PATH , jedyną inną opcją jest zainstalowanie ekspresowej w katalogu aplikacji, na przykład npm install express --save. Express może być już zainstalowany, ale nodez jakiegoś powodu nie może go znaleźć

Shemogumbe
źródło
Ten działał dla mnie, lepiej wykonaj polecenie instalacji w tym samym katalogu, w którym znajdują się twoje pliki .js. Możesz także uruchomić polecenie "npm init", aby utworzyć plik package.json, aby uniknąć dalszych problemów.
emarshah
3

Masz swój moduł ekspresowy znajdujący się w innym katalogu niż projekt. Prawdopodobnie jest to problem, ponieważ próbujesz to require()zrobić lokalnie. Spróbuj przenieść swój moduł Express z / Users / feelexit / nvm / node_modules / express do / Users / feelexit / WebstormProjects / learnnode / node_modules / express . Te informacje mogą dostarczyć więcej szczegółów na temat struktur plików node_module.

Domyślna
źródło
2

jeśli twój główny plik znajduje się w, /Users/feelexit/WebstormProjects/learnnode/node_modules/index.jsto express musi być zlokalizowany, /Users/feelexit/WebstormProjects/learnnode/node_modules/node_modulesponieważ węzeł zawsze szuka modułów w ./node_modules(i jego folderze wewnętrznym), gdy ścieżka nie zaczyna się od ./lub /( więcej informacji tutaj )

Myślę, że przegapiłeś umieszczenie swojego głównego pliku w folderze modułu

VeXii
źródło
2

w tym scenariuszu uruchom polecenie npm install express, używając wiersza poleceń cmd w odpowiednim folderze, w którym chcesz uruchomić program. Przykład Chcę uruchomić program modułu ekspresowego server.js w F: \ nodeSample. Uruchom więc „npm install express” w tym konkretnym folderze, a następnie uruchom server.js

Rijo
źródło
1

Uruchom npm install express body-parser cookie-parser multer --savepolecenie w tym samym katalogu, w którym znajduje się plik nodejs kodu źródłowego, aby rozwiązać ten problem. P / s: sprawdź katalog po uruchomieniu polecenia, aby dowiedzieć się więcej!

Do Tat Hoan
źródło
1

W rzadkich przypadkach pamięć podręczna npm może ulec uszkodzeniu. Dla mnie zadziałało:

npm cache clean --force

Ogólnie rzecz biorąc, menedżer pakietów sam wykryje uszkodzenie i załaduje ponownie, więc zwykle nie jest to konieczne. Jednak w moim przypadku Windows 10 zawiesił się kilka razy i podejrzewam, że mogło to być podczas operacji pobierania. Mam nadzieję, że to komuś pomoże!

Więcej informacji: https://docs.npmjs.com/cli/cache

jwerner
źródło
1

Natknąłem się na podobny problem i ostatecznie była to kwestia starych zależności, które zepsuły mój serwer Heroku.

Będąc w folderze mojego projektu uruchomiłem:

npm uninstall
npm install

Mam nadzieję, że to pomoże

HClx
źródło
0

npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'

Dzieje się tak z powodu braku uprawnień lub odłączonych plików, gdy npm działał.

Oznacza to, że wykonywanie npmjako ten użytkownik nie ma wystarczających praw do odczytu / zapisu z pliku, w tym przypadku package.json.

spróbuj dodać sudoprzed całym poleceniem - powinno rozwiązać.

$ sudo npm install -g express
$ Password:*******

Hasło byłoby hasłem administratora twojego komputera Mac.

-gflaga zainstaluje ten moduł (ekspresowo) w globalnym kontekście węzła - co oznacza, że ​​węzeł będzie / powinien rozpoznawać expressmoduł z dowolnego pliku js bez konieczności podawania pełnej ścieżki do używanego modułu.

Mam nadzieję że to pomoże!!

zaciemniać
źródło
0

Miałem ten sam problem. Mój problem polegał na tym, że przed zainstalowaniem Express muszę przejść do katalogu projektu Node.js w wierszu poleceń.

cd /Users/feelexit/WebstormProjects/learnnode/node_modules/
user3377708
źródło
0

Zgaduję, że to są zajęcia z kursu Colt Steele's Web Development ... Szukałem tej samej odpowiedzi, dlaczego również wylądowałem z tym błędem ... Colt nie mówi tego, ale bierzesz folder node_module i przenosisz się do nowego folderu, w którym pracujesz ... to właśnie zadziałało.

Bibi DeLeon
źródło
0
D:\learn\Node.js\node app.js
module.js:549
    throw err;
    ^

Error: Cannot find module 'body-parser'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

Czasami wersja nie pasuje do package.json Naprawiono problem, sprawdzając plik package.json, a następnie użyj następujących poleceń: npm install [email protected] rozwiązało to za mnie.

Sarath Kumar
źródło
0

Czy próbowałeś

npm install

Jeśli szukasz tylko ekspresu

npm install --save express
Akash Yellappa
źródło