Po ściągnięciu modułu z GitHub i wykonaniu instrukcji, aby go zbudować, próbuję wciągnąć go do istniejącego projektu przy użyciu:
> npm install ../faye
Wygląda to na załatwienie sprawy:
> npm list
/home/dave/src/server
└─┬ faye@0.7.1
├── cookiejar@1.3.0
├── hiredis@0.1.13
└── redis@0.7.1
Ale Node.js nie może znaleźć modułu:
> node app.js
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'faye'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.0 (module.js:470:10)
Naprawdę chcę zrozumieć, co się tutaj dzieje, ale nie wiem, gdzie dalej szukać. Jakieś sugestie?
node_modules
Oczekuje się katalog znajdować się w katalogu głównym projektu alongisdeapp.js
w Twoim przypadku. Dlaczego..
użyłeś ścieżki instalacji npm?Odpowiedzi:
Użycie
npm install
instaluje moduł tylko w bieżącym katalogu (w podkatalogu o nazwienode_modules
). Czy plik app.js znajduje się podhome/dave/src/server/
? Jeśli nie i chcesz użyć modułu z dowolnego katalogu, musisz zainstalować go globalnie, używającnpm install -g
.Zwykle instaluję większość pakietów lokalnie, aby były one rejestrowane wraz z kodem mojego projektu.
Aktualizacja (8/2019):
Obecnie możesz używać pliku package-lock.json , który jest generowany automatycznie, gdy npm modyfikuje katalog node_modules. Dlatego możesz pominąć sprawdzanie pakietów, ponieważ
package-lock.json
śledzi dokładne wersje modułów, których aktualnie używasz. Aby zainstalować pakietypackage-lock.json
zamiastpackage.json
używać polecenianpm ci
.Aktualizacja (3/2016):
Otrzymałem dużo odpowiedzi na moją odpowiedź, szczególnie, że sprawdzam pakiety, od których zależy mój kod. Kilka dni temu ktoś nie opublikował wszystkich swoich pakietów ( https://kodfabrik.com/journal/i-ve-just-liberated-my-modules ), które złamały React, Babel i prawie wszystko inne. Mamy nadzieję, że teraz jest jasne, że jeśli masz kod produkcyjny, nie możesz polegać na NPM, który faktycznie utrzymuje twoje zależności dla Ciebie.
źródło
package.json
listę, na których modułach npm jesteś zależny i zignorowaćnode_modules
folder. Następnie po prostunpm install
skonfiguruj po sklonowaniu repozytorium.package.json
wymieniania zależności lubię przechowywać dobre kopie rzeczy, od których jestem zależny. Miejsce na dysku jest tanie i jeśli npm lub pakiet zniknie z npm, nadal będę mieć w pełni działający projekt w moim repozytorium.Miałem bardzo podobny problem. Usunięcie całego
node_modules
folderu i ponowna instalacja działały dla mnie:źródło
npm install
/npm update
nie rozwiąże. Rozwiązało to problemError: Cannot find module 'http-errors'
polegający na tym, że losowo zaczął się wyświetlać, gdy próbowałem uruchomić aplikację Express.npm install
.Na przykład, jeśli błąd wynosi:
możesz rozwiązać ten problem, wykonując polecenie
npm install --save form-data
.źródło
ng new project-name
, pokazując brakujące moduły ... Musiałem zainstalować każdy z nich za pomocą podanego polecenia. Następnie rozwiązało to problem, ale jest istnieje jedno polecenie, aby zainstalować je wszystkie naraz?Dla użytkowników maszynopis, jeśli importujesz wbudowany moduł Node (takich jak
http
,path
luburl
) i otrzymujesz błąd taki jak"Cannot find module "x"
wówczas błąd można naprawić, uruchamiającPolecenie zaimportuje definicje NodeJS TypeScript do projektu, umożliwiając korzystanie z wbudowanych modułów Node.
źródło
Dzieje się tak, gdy pierwszy npm instalacja uległa awarii z jakiegoś powodu (SIGINT npm), opóźnienie jest zbyt długie lub dane są uszkodzone. Ponowna próba instalacji npm nie uratuje problemu.
Coś poszło nie tak podczas pierwszego sprawdzania npm, więc najlepszym wyborem jest usunięcie pliku i ponowne uruchomienie instalacji npm.
źródło
npm cache clear
i wyczyszczeniu modułów node_modules, a następnienpm install
rozwiązaniu problemu.Jeśli używasz nvm, sprawdź, czy istniejące moduły node_binding, które są powiązaniami z innymi bibliotekami, zostały skompilowane dla poprawnej wersji Node.js.
Miałem ten sam błąd. Powód był następujący: używamy nvm, ponieważ uruchamiamy dwie aplikacje na serwerze, jedna wymaga Node.js 5.6, ponieważ używa node-gd (która na razie nie działa na Node.js 6), druga wymaga Node.js 6. Node.js 6 to instalacja apt-get .
Do wdrożenia używamy również narzędzia pm2.
Tak więc domyślna konfiguracja polega na tym, że proces pm2 uruchamia się, gdy nvm nie działa, więc używa instalacji apt-get Node.js (wersja 6). Tak więc główny demon pm2 zaczyna się od Node.js 6. Jeśli uruchamiam aplikacje w trybie rozwidlenia, uruchamiają się one w osobnych procesach i obowiązują ustawienia nvm. Gdy uruchamiam aplikacje w trybie klastra - dziedziczą one środowisko inne niż NVM.
Kiedy więc próbowałem przełączyć się w tryb klastra, aplikacja nie uruchomiła się, ponieważ powiązania skompilowane dla wersji 5.6 nie powiodły się z tym komunikatem.
Naprawiłem to przez ponowne uruchomienie pm2, gdy obowiązują ustawienia NVM. Również skrypty startowe powinny zostać naprawione.
źródło
Sprawdź, czy zmienna środowiskowa NODE_PATH jest ustawiona poprawnie i wskazuje ścieżkę node_modules. nodejs używa tej zmiennej do wyszukiwania bibliotek
źródło
Wczoraj wystąpił ten błąd. Chwilę zajęło mi zrozumienie, że
main
wpispackage.json
wskazywał na plik, który przeniosłem. Raz zaktualizowałem, że błąd zniknął, a pakiet działał.źródło
main
wpis dla mojego podmodułu w katalogu, który został wykluczony z jego repozytorium, więc kiedy próbowałem dołączyć go przeznpm install
to działało, ale nie było eksportu, gdy było to wymagane! Wielkie dzięki za tę oczywistą, ale przydatną odpowiedź.Usuń
node_module
folder główny z projektu (npmyApp
.:). Przejdź domyApp
folderu, a następnie wpisz poniżej polecenie z terminalaZainstaluje wszystkie moduły zależności wymagane dla twojego projektu.
źródło
Ten błąd można napotkać, jeśli tworzysz
require
moduł z brakującym lub niepoprawnymmain
polem w pliku package.json. Chociaż sam moduł jest zainstalowany, npm / node musi użyć pojedynczego pliku .js jako punktu wejścia do modułu. Jeślimain
pola nie ma, domyślnie szukaindex.js
w folderze modułu. Jeśli główny plik modułu nie jest nazwy index.js, nie będzie w stanie tego zrobićrequire
zrobić.Odkryty podczas przekształcania
browserify
modułu opartego na module CommonJSrequire
;browserify
nie przejmowałem się brakującymmain
polem, więc błąd zniknął niezauważony.źródło
Podaj ścieżkę do folderu Restler, który będzie w folderze node_modules, na przykład: var rest = Require ('./odn_modules / restler');
To zadziałało dla mnie.
źródło
Jeśli używasz maszynopisu i pojawia się błąd po zainstalowaniu wszystkich modułów węzłów, usuń go
package-lock.json
. A potem biegnijnpm install
.źródło
WSKAZÓWKA PRO:
Ten błąd przydarzył mi się podczas walki ze zmęczeniem i łagodną chorobą, ponieważ pisałem
node blah
zamiastnpm blah
.Otrzymany komunikat o błędzie nie był wystarczająco zły, aby ostrzec mnie o moim szaleństwie!
źródło
Napotkałem ten sam problem, gdy ktoś w zespole zaktualizował
package.json
SVN. Samo usunięcienode_modules
katalogu nie pomogło. Jak rozwiązałem problem:Mam nadzieję, że to komuś pomoże!
źródło
npm install
wszystko znowu działa dobrze.package.json
skąd NPM wie, co zainstalować?Mogę dodać jeszcze jedno miejsce do sprawdzenia; Pakiet, którego próbowałem użyć, był kolejnym z moich własnych pakietów, które opublikowałem na prywatnym repozytorium NPM. Zapomniałem poprawnie skonfigurować właściwość „main” w pliku package.json. Tak więc pakiet był w folderze node_modules konsumującego pakietu, ale otrzymywałem komunikat „nie można znaleźć modułu”. Zajęło mi kilka minut, aby zdać sobie sprawę z mojej pomyłki. :-(
źródło
W moim przypadku
UNMET PEER DEPENDENCY redux@^3.0.0
spowodowałem ten komunikat o błędzie, zobacz je wszystkie i ponownie zainstaluj brakujące moduły za pomocą opcji --saveźródło
Usunięcie węzła / npm, a następnie ponowna instalacja stabilnej (nie najnowszej) wersji działało dla mnie.
źródło
W Appsome Solutions mieliśmy ten sam problem z konfiguracją naszego projektu maszynopisu i dodany
"moduleResolution": "node",
w tsconfig.json rozwiązał go.źródło
Próbowałem opublikować własny pakiet, a następnie dołączyć go do innego projektu. Miałem ten problem z powodu tego, jak zbudowałem pierwszy moduł. Korzystam z eksportu ES2015, aby utworzyć moduł, np. Powiedzmy, że moduł wygląda tak:
Po skompilowaniu z Babelem i wcześniej opublikowanym:
Więc po
npm install module-name
kolejnym projekcie (brak ES2015) musiałem to zrobićvar hello = require('module-name').default;
Aby faktycznie zaimportować pakiet.
Mam nadzieję, że to pomaga!
źródło
Napotkano ten problem podczas korzystania
webpack
zwebpack-dev-middleware
.Zamienił pojedynczy plik w folder .
Obserwator zdawał się nie widzieć nowego folderu, a modułu brakowało.
Naprawiono przez ponowne uruchomienie procesu.
źródło
Właśnie znalazłem niezwykły scenariusz, który może być komuś przydatny i jest rodzajem czerwonego śledzia.
Otrzymywałem również błąd Cannot Find Module, ale dziwnie wszystko działało idealnie w moim lokalnym (Node.js) środowisku (Mac). Ten problem pojawił się dopiero po wdrożeniu kodu na naszym serwerze Linux.
Cóż ... okazało się, że jest to literówka, która (najwyraźniej) oparta na Macu instalacja Node.js była całkowicie szczęśliwa zignorować.
Dołączenie wyglądało tak:
Ale rzeczywisty plik nazywał się „s3Uploader.class.js”
Zwróć uwagę na różnicę wielkości liter w „s” w porównaniu do „S” między kodem a nazwą pliku.
Więc - na dziwną szansę, że żadne z innych rozwiązań nie rozwiązuje twojego problemu, potrójnie sprawdź, czy nie źle wpisujesz znaki w dołączonej nazwie pliku! :)
i DUH!
źródło
Może tak jak ja ustawiłeś „view engine” w trybie ekspresowym na silnik, który nie istnieje, lub próbowałeś użyć niezarejestrowanego silnika szablonów. Upewnij się, że używasz:
app.engine('engine name',engine) app.set('view engine','engine name')
źródło
Zainstaluj nowy CLI v3 (npm install -g ionic @ latest).
Jeśli ten problem nadal występuje w CLI v3. Dziękuję Ci!
źródło
Jeśli pakiet został zainstalowany pomyślnie, przejdź do folderu node_modules, a następnie sprawdź plik i ścieżkę. Następnie zaimportuj. Mam nadzieję że to pomoże.
źródło
Przede wszystkim tak, część mojej odpowiedzi zdecydowanie jest pomocna w rozwiązaniu błędu, który został opublikowany przez OP. Po drugie, po wypróbowaniu poniższego kroku, spotkałem się z kilkoma innymi błędami, dlatego też napisałem ich rozwiązanie.
(Psst! Nie jestem pewien, czy udało mi się pomóc w rozwiązaniu powyższego błędu, czy też złamałem jakąś zasadę lub format odpowiedzi, ale napotkałem powyższy błąd i kilka innych i znalezienie go zajęło mi dużo czasu właściwe rozwiązania dla tych błędów. Piszę kompletne rozwiązanie, ponieważ w przypadku, gdy ktoś inny również napotka te błędy, mam nadzieję, że znajdzie rozwiązanie tutaj.)
Więc dodając i opracowując odpowiedź udzieloną przez PrashanthiDevi , a także dodając moje osobiste doświadczenie, oto ona:
Jestem nowy w całej e2e i testach jednostkowych. Zacząłem patrzeć na tę część od Kątomierza . Teraz miałem już pliki, w których napisano testy, ale musiałem je uruchomić.
Zainstalowałem już wszystkie wymagane oprogramowanie i narzędzia, ale kiedy początkowo uruchomiłem kod do uruchomienia testów,
gulp itest
dostałem ten błąd „Nie można znaleźć modułu” . Po przejrzeniu wielu różnych pytań dotyczących SO znalazłem jedną odpowiedź, która moim zdaniem mogłaby pomóc w znalezieniu rozwiązania.Osoba zasugerowała uruchomienie polecenia
npm install
w folderze mojego projektu.Powód, aby robić to było zaktualizować węzła-modules folder wewnątrz naszego katalogu projektu, ze wszystkimi wymaganymi i niezbędnych plików i zależności.
(Poniższa część może być nieistotna z tym pytaniem, ale może być pomocna, jeśli ktoś natknie się na tę samą sytuację, z którą się spotkałem).
Powyższy krok z pewnością rozwiązał mój poprzedni błąd, ale rzucił nowy! Tym razem jest to błąd
Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver'
.Jednak rozwiązanie tego błędu było dla mnie dość głupie (i zabawne). Miałem już plik chromedriver w moim folderze selenu . Ale okazuje się, że powyższy błąd nadchodził, ponieważ moje pliki chromedriver znajdowały się w folderze selenu, a nie w folderze chromedriver . Tak więc utworzenie folderu chromedriver i skopiowanie tam plików chromedriver rozwiązało mój problem!
Ponadto w przypadku błędu: Przekroczono limit czasu oczekiwania na serwer WebDriver , możesz dodać ten wiersz kodu do pliku conf.js wewnątrz
exports.config{}
:seleniumAddress: 'http://localhost:8080/'
Mam nadzieję że to pomoże!
źródło
Mam proste rozwiązanie tego problemu.
Wystarczy usunąć C: \ Users \ UserName \ AppData \ Roaming \ npm \
a następnie zainstaluj węzeł.
Teraz twój problem zostanie rozwiązany.
źródło
Uruchom tylko następujące polecenie:
Zainstaluje wszystkie wymagane moduły w
node_modules
folderze.źródło
to działa dla mnie.
źródło
Zmień katalog i wskaż bieżący folder projektu, a następnie „npm install”. .
Spowoduje to zainstalowanie wszystkich zależności i modułów w folderze projektu.
źródło
npm install
we właściwym katalogu. Nie ma w tym nic negatywnego