Napisałem swoją pierwszą aplikację node.js, ale nie mogę znaleźć biblioteki ekspresowej:
C:\ChatServer\Server>node server.js
module.js:340
throw err;
^
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:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Ale Express jest zainstalowany (z -g
kluczem):
C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)
Trochę informacji:
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>node --version
v0.10.9
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
Jak mogę rozwiązać ten problem? ( MUSZĘ zainstalować bez -g
?)
Odpowiedzi:
Musisz zainstalować Express lokalnie w kontekście swojej aplikacji (
node_modules
folderu):Powodem tego jest to, że aplikacje zawsze szukają wszelkich zależności w swoim lokalnym kontekście. Globalna instalacja służy tylko do konfigurowania dostępnych dla całego systemu plików binarnych, takich jak programy uruchamiające testy jednostkowe, programy ładujące i tym podobne.
Dzięki Express, gdy instalujesz go globalnie, otrzymujesz plik
express
binarny, który może załadować aplikację za Ciebie. Aby uzyskać więcej informacji, wpiszTak więc, odpowiadając na ostatnie pytanie: TAK , musisz go zainstalować bez
-g
.źródło
winston
zainstalowany w systemie, który pracował dla jakiegoś powodu podczas uruchamiania Moje app jako zwykły użytkownik, ale podczas uruchamiania mojej aplikacji i systemu startowych skryptu to nie będzie działać. Naprawiłem to, instalując lokalnie winston w katalogu aplikacji (i dodając go do package.json).U mnie zadziałało po zainstalowaniu ekspresowym lokalnie z opcją --save w następujący sposób:
źródło
Sprawdź, czy nie instalujesz
express
modułu, użyj tego polecenia:a jeśli twój
node_modules
katalog jest w innym miejscu, ustawNODE_PATH
zmienną środowiskową:źródło
Golo dobrze wyjaśnił rozwiązanie, ale mogę dodać wyjaśnienie:
czasami moduły węzłów są instalowane w
a po uruchomieniu węzła blabla.js przeszukiwane są moduły
Rozwiązaniem jest więc utworzenie dowiązania symbolicznego:
źródło
W twoim przypadku twój
express
moduł jest zainstalowany wC:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
, ale musisz pobrać ten moduł do katalogu twojego projektu. Więc należy skopiować plik zexpress
foldery z modułuC:\Users\Dmitry\AppData\Roaming\npm\node_modules\
do katalogu projektu jako:C:\ChatServer\Server\node_modules
. Jeśli nie masz folderu o nazwie „node_modules” w folderze projektu, utwórz go najpierw i wklej te pliki do tego folderu. Ta metoda zadziałała na moim komputerze z systemem Windows. Zrestartuj serwer węzłów i jeszcze raz uruchom węzeł poleceńC:\ChatServer\Server>node server.js
. Powinno teraz działać !!!!źródło
W systemie operacyjnym opartym na Ubuntu możesz spróbować
działa dla mnie na mennicy
źródło
Biorąc pod uwagę, że masz zainstalowany węzeł w swoim systemie, zainstaluj Express lokalnie dla swojego projektu, używając następującego programu dla systemu Windows:
lub
Możesz nadać mu globalny dostęp, używając:
źródło
Miałem ten błąd w vscode, chociaż moduły były zainstalowane. Używam maszynopisu i ekspresu. W
server.ts
plikach wszystkie importowane pliki miały czerwone faliste podkreślenia. Okazuje się, że miałem uszkodzonytsconfig.json
plik.źródło
utwórz jeden folder na dysku twardym, np. sample1 i przejdź do wiersza poleceń wpisz: cd i podaj ścieżkę do folderu sample1 a następnie zainstaluj wszystkie moduły ...
a następnie cokolwiek tworzysz aplikację, zapisz w folderze sample1
Spróbuj...
źródło
przejdź do katalogu aplikacji i zainstaluj moduł express, używając poniższego polecenia npm install express --save, a następnie wyświetl listę wszystkich modułów instalacyjnych, używając poniższego polecenia npm ls , zobaczysz wszystkie moduły instalowane lokalnie.
źródło
instalacja ekspresowa na całym świecie nie będzie działać w Twoim projekcie lokalnym, więc musisz zainstalować ją lokalnie do użytku.
Mam nadzieję, że to zadziała
Dziękuję Ci
źródło
Mam ten sam problem. Ekspresowo zainstalowałem globalnie w / usr / local / bin /. Kiedy wykonuję 'npm install', ekspres nie został utworzony w node_modules katalogu lokalnego.
źródło
To zadziałało dla mnie na MacOS X Sierra
źródło
Nie jestem z tego dumny, ale w moim przypadku miałem:
źródło
Wystąpił ten sam błąd, postępując zgodnie z przykładem w tej książce: „Kubernetes działa i działa”.
Widzę wiele odpowiedzi sugerujących instalację ekspresu „ręcznie”, ale nie jestem przekonany, że jest to najlepsze rozwiązanie.
Ponieważ używamy package.json (widzę to w logach) i działa właściwy sposób budowania aplikacji
npm install
, dodałem wyraźną zależność w pliku package.json .Aktualną wersję otrzymuję z
npm search express
.źródło