Otrzymuję następujący błąd:
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
Oto szczegóły mojej wersji:
System operacyjny: Windows 7
MongoDB: 2.6.5
Węzeł: 0.12.0
Próbowałem tych rzeczy, zanim opublikowałem problem tutaj.
Poszedłem do
\node-modules\mongoose\node-modules\mongodb\node-modules\bson
folderu i dokonałem poniżej zmiany w pliku bind-gyp z'include_dirs': [ '<!(node -e "require(\'nan\')")' ]
do'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]
Uruchomiłem to polecenie
npm install -g node-gyp
Zaktualizowałem wersję Mongoose do 3.8.21 inside
package.json
Nic nie działa. Proszę zasugeruj
Odpowiedzi:
Znajdź w module npm mongodb:
Zmień ścieżkę do wersji js w bloku catch:
Do:
Lub skopiuj plik w:
Z:
źródło
Miałem ten problem dzisiaj (19 lutego 2016 r.) I rozwiązałem go po prostu instalując najnowszą wersję Mongoose. Spróbuj umieścić to w swoim pliku package.json:
Mam nadzieję, że to pomoże. Rozwiązałem to za mnie!
źródło
Problem polega na tym, że gdy instalujesz mongoose przez npm, zakłada się, że masz zainstalowany python w systemie Windows i próbuje zbudować wymagane biblioteki. Ponieważ nie masz Pythona, pomija fazę budowania z ostrzeżeniem. Ale po uruchomieniu aplikacji nie ma wymaganych modułów, więc pojawia się ten błąd.
Aby wszystko zrobić dobrze, najpierw zainstaluj Pythona (wersja 2.7) na swoim komputerze z: https://www.python.org/downloads/ lub jeśli masz zainstalowany chockolatey, po prostu wpisz
choco install python2
.Następnie upewnij się, że zmienna Pythona jest ustawiona. Możesz ustawić go w wierszu polecenia, na przykład:
(Oczywiście powinieneś zmienić ścieżkę zgodnie z lokalizacją Pythona) Następnie zainstaluj node-gyp:
Teraz możesz ponownie zainstalować mongoose lub inny moduł powodujący problem:
Tym razem zobaczysz żółte linie zamiast czerwonych, ale błąd zniknie.
źródło
--msvs-version=2012
lub w2013e
zależności od tego, co zainstalowałeś. np.npm install mongoose --msvs-version=2012
Rozwiązałem ten problem, instalując wersję mogoose
3.8.23
źródło
To zadziałało dla mnie. Wyszukaj w swoim obszarze roboczym tekst:
Znajdziesz go prawdopodobnie wewnątrz modułów mongos i mnichów.
Następnie wymień każdy:
z:
to wszystko!
źródło
Spróbuj,
npm install [email protected]
a także zamieńbson = require('../build/Release/bson');
nabson = require('../browser_build/bson');
w node_modules / bson / ext / index.jsźródło
To zadziałało dla mnie:
Przejdź do pliku (w swoim projekcie):
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
i zmień:
bson = require('../build/Release/bson');
do:
bson = require('bson');
Źródła: https://github.com/mongodb/js-bson/issues/118
źródło
node_modules
katalog w kontroli źródła?Krótka odpowiedź
Zainstaluj najnowszą wersję mongodb.
Trochę dłuższa odpowiedź
Upewnij się, że plik package.json używa najnowszej wersji mongodb, a następnie usuń node_modules / mongodb i ponownie zainstaluj npm. Jeśli nie używałeś mongodb jako bezpośredniej zależności, spróbuj znaleźć pakiet, który używa mongdb. Użyłem:
Więc zaktualizowałem ./sails-mongo/package.json do:
Następnie usuń node_modules / mongodb i ponownie zainstaluj npm. Teraz wydaje się dobrze.
Jeszcze dłuższa odpowiedź
Nie podoba mi się obecny sugerowany sposób używania
Od czasu przyjrzenia się ../browser_build/bson.js, plikowi 4k + linii, który również wydaje się być implementacją „nierodzimą”. Więc chociaż nie wypluwa żadnych narzekań, nadal „używa czystej wersji JS”, co oznacza wolniejsze działanie.
Patrząc na https://github.com/mongodb/js-bson/issues/145 i https://github.com/mongodb/js-bson/issues/165 , wydaje się, że przyczyną problemu były:
Więc próbowałem usunąć całe node_modules i nadal otrzymywałem ten sam błąd. Patrząc na plik package.json z node_modules / mongodb, jego wersja to nadal 1.4.26, a nie najnowsza 2.1.7.
Najwyraźniej mój mongodb jest zależny od innego zainstalowanego pakietu: sails-mongo. Modyfikacja pliku package.json z sails-mongo i ponowne wykonanie instalacji npm ostatecznie rozwiązuje problem.
źródło
Wdrażając Keystone JS CMS miałem ten sam błąd i myślę, że najbardziej eleganckie rozwiązanie to:
Zainstaluj
npm-check-updates
:W katalogu witryny keystone, w której się
package.json
znajduje, sprawdź zależności:Następnie zaktualizuj wszystkie pakiety:
I wreszcie, jeśli wybrałeś
jade
szablony, być może będziesz potrzebowaćjade
jawnie modułu instalacji :źródło
Zaznaczona odpowiedź jest całkowicie błędna. Wszystko, co robi, to ukrywanie instrukcji dziennika konsoli i nic nie robi, aby rozwiązać faktyczny problem. Możesz także zamknąć oczy, a osiągniesz ten sam efekt.
Problem jest spowodowany przez node-gyp i tylko to. Jego celem jest kompilacja natywnych rozszerzeń dla określonych modułów, takich jak bson.
Jeśli nie udaje mu się tak wtedy kod będzie awaryjne wersji JS i łaskawie powiedzieć więc poprzez komunikat informacyjny:
Zakładam, że tak naprawdę chodzi o to, jak skompilować natywne rozszerzenie C ++, a nie tylko nie widzieć wiadomości, więc zajmijmy się tym.
Aby node-gyp działał, twój node-gyp musi być na bieżąco z twoim węzłem i kompilatorem C ++ (który będzie się różnić w zależności od twojego systemu operacyjnego). Co równie ważne, Twój moduł musi być aktualny.
Najpierw odinstaluj i ponownie zainstaluj node-gyp
Teraz będziesz musiał w pełni odinstalować i ponownie zainstalować dowolny moduł węzła w swojej aplikacji (w tym również moduły zainstalowane przez wymagania), które mają bson. To powinno rozwiązać problem. Możesz wyszukać „Release / bson” i znaleźć winowajców.
Następnie odinstaluj i ponownie zainstaluj te moduły.
Łatwiej jest po prostu powtórzyć cały
node_modules
folder:Jeśli nadal występują problemy, to albo 1) twój moduł jest nieaktualny - sprawdź tracker problemów w ich repozytorium lub 2) masz potencjalny konflikt - czasami możemy mieć na przykład lokalny węzeł gyp. Możesz działać
node-gyp
samodzielnie i weryfikować wersje.źródło
Podczas tworzenia konfiguracji dla
www.spotdekho.com
nowejwindows10
maszyny nie mogłem uruchomić polecenia z"nodemon web.js"
powodu tego samego błęduNaprawiono to, wykonując poniższe czynności:
To rozwiąże problem.
PS: Używam wersji Mongoose 4.8.8.
Dzięki :), mam nadzieję, że to komuś pomoże.
źródło
W moim przypadku bity dostarczane z mongoose (
npm install mongoose
) mają działającą wersjęmongodb
pakietu w swoimnode_modules
folderze.Poniższe kroki pozwoliły mi zaoszczędzić pracę przy rozwiązywaniu problemu:
npm install mongoose
node_modules\mongoose\node_modules\mongodb
do mojegonode_modules
folderu głównego (nadpisując każdą dostarczoną wersjęnpm install mongodb
)Failed to load c++ bson extension...
błąd (lub zmień kod, aby milczeć w sprawie)źródło
Kiedy otrzymywałem takie błędy, przeprowadzałem aktualizację z węzła v0.10 do węzła v4.xx. Musiałem zainstalować nowszą wersję gcc (myślę, że miałem gcc v4.4.x lub coś w tym rodzaju). Zaktualizowałem do gcc 4.7.2 i po tym wszystko działało.
źródło
Miałem też ten sam problem z bsonem.
wypróbowanie nowszej wersji mangusty
rozwiązał problem.
Massimo.
źródło
Uruchom to polecenie, aby odinstalować mongoose
npm uninstall --save mongoose
- następnie zainstaluj go ponownie, ale tym razemnpm
automatycznie zainstaluje najnowszą wersję mongoose run.npm install --save mongoose
To zadziałało dla mnie.źródło
Niestety, wszystkie powyższe odpowiedzi są tylko w połowie poprawne. Rozszyfrowanie tego zajęło dużo czasu ..
Mongoose bson install przez npm wyrzuca ostrzeżenie i powoduje błąd ...
To działa jak magia !!
źródło
Jeśli używasz systemu Windows 8.1, możesz chcieć upewnić się, że instalujesz moduły npm z poprawnym kompilatorem programu Visual Studio.
Mam zainstalowany program Visual Studio 2012, to polecenie działa dla mnie. (po usunięciu katalogu node_modules)
npm install --msvs_version = 2012
Z jakiegoś powodu node-gyp próbuje użyć niepoprawnej wersji kompilatora programu Visual Studio. Zauważyłem również, że polecenie "npm install" wyświetlało ostrzeżenia o zależnościach nie związanych z węzłem-gyp podczas instalowania modułów mongodb i mongoose.
Po użyciu poprawnej wersji msvs_version zniknęły ostrzeżenia dotyczące instalacji npm, a także ostrzeżenie konsoli podczas uruchamiania aplikacji nodejs.
Możesz również chcieć upewnić się, że masz zainstalowaną poprawną wersję Pythona 2.7.X, a nie Pythona 3.0.X.
Musisz również upewnić się, że w ścieżce env znajduje się język Python.
źródło
npm install --msvs_version=2012
Jedyne, co mi pomaga w Windows 7 (x64): https://stackoverflow.com/a/29714359/2670121
Zainstaluj ponownie węzeł i język Python w wersjach x32.
Spędziłem wiele czasu z tym błędem (Failed to load c ++ bson extension) i wreszcie, kiedy zainstalowałem moduł
node-gyp
(do budowania natywnych dodatków), a nawet zainstalowałem Windows SDK z Visual Studio - nodejs nie rozpoznał zmontowanego modułu bson.node jako moduł. Po ponownej instalacji problem zniknął.Ponownie, co oznacza ten błąd?
Właściwie to nawet nie jest błąd. Nadal możesz używać mangusty. Ale w tym przypadku, zamiast szybkiej natywnej realizacji modułu bson, otrzymałeś wykonanie js, które wolniej. Widziałem wiele wskazówek, takich jak: „edytuj ścieżkę głęboko w node_modules ...” - które są całkowicie bezużyteczne, ponieważ nie rozwiązują problemu, a jedynie wyłączają komunikaty o błędach.
źródło
Spróbuj tego
npm install bson
inpm update
źródło
Nigdy nie należy zmieniać plików w folderze biblioteki NODE_MODULES.
Te pliki są wynikiem
npm install
polecenia.Zasadniczo myślę, że dla użytkowników Windowsa - właściwym sposobem jest użycie VM. To właśnie robię, gdy pracuję w domu.
Wszystko czego potrzebujesz:
for CentOS: yum install gcc gcc-c++ make openssl-devel
for Debian/Ubuntu: apt-get install build-essential
a następnie
npm install
lub, jeśli już to zrobiłeś -npm update
źródło
Najlepszym rozwiązaniem dla mnie była aktualizacja z node-mongodb 1.x do 2.x.
źródło
Zdaję sobie sprawę, że ten wątek ma ponad rok, ale pomógł mi, chociaż z innym modułem.
Zainstalowałem mongoose-post-findv0.0.2 i zaczął się ten problem. Aby to naprawić, skorzystałem z sugestii i przeszedłem do \ node_modules \ mongoose-post-find \ node_modules \ bson \ ext i otworzyłem plik index.js.
Plik zaczyna się od bloku try catch próbującego wymagać poprawnej wersji bson
to jest poprawiona wersja. To, co się działo, to próba załadowania bson z ../build/Release/bson, nie mogła go znaleźć i wpadła w pułapkę. Próbowano ponownie załadować bson z ../build/Release/bson i oczywiście nie powiodło się. Więc zmieniam ścieżkę w catch, aby spojrzeć na ../browser_build/bson. To rozwiązało błąd.
Publikuję to dla kompletności.
źródło
Miałem ten sam problem po aktualizacji wersji Ubuntu do 16.04. Rozwiązałem w ten sposób, mam nadzieję, że to pomoże.
źródło
W naszym przypadku powodem, dla którego nie znaleziono wersji c ++ bson, było to, że byliśmy za korporacyjnym serwerem proxy i coś w procesie kompilacji BSON musi dotrzeć do pobrania plików. Kiedy zajrzeliśmy do node_modules / bson / builderror.log, zobaczyliśmy następujący błąd:
gyp WARN install got an error, rolling back install gyp ERR! configure error gyp ERR! stack Error: connect ECONNREFUSED gyp ERR! stack at errnoException (net.js:904:11) gyp ERR! stack at Object.afterConnect [as oncomplete] (net.js:895:19)
Co sugerowało, że proxy może być problemem. Ustawienie zmiennych środowiskowych http_proxy i https_proxy rozwiązało problem.
Przepraszam za ponowne wzbudzenie komentarzy na ten temat, ale chciałem opublikować to dla każdego, kto trafi na to w przyszłości, ponieważ ten wątek był bardzo pomocny w rozwiązaniu naszego problemu.
źródło
Próbowałem zainstalować mongoose npm --msvs_version = 2012, jeśli masz zainstalowanych wiele Visual, zadziałało to dla mnie
źródło
Pierwsza kopia
bson.js
kodu zbrowser_build folder
po drugie utwórz nowy plik
bson.js
i wklej kodpo trzecie zapisz nowy plik w pobliżu w
index.js
.źródło
Pracuję z systemem operacyjnym Windows 8.1 i miałem ten sam problem. Źródłem problemu była wersja Pythona. Znalazłem problem z pochodzeniem, przejrzyj plik ... \ node_modules \ mongodb \ node_modules \ mongodb-core \ node_modules \ kerberos \ builderror.log.
Zainstalowałem poprawną wersję Pythona (2.7.9 dla 64 bitów) i rozwiązało to mój problem.
Uwaga: Zainstalowana wersja języka Python musi być równa lub większa niż 2.7.5 i mniejsza niż 3.0.0
źródło
Próbowałem,
bson = require('../browser_build/bson');
ale w końcu napotkałem inny błądWreszcie rozwiązałem ten problem po prostu
npm update
, naprawi to moduł bson w mongoose.źródło
Tak więc mam ten sam problem i zdarza się, że określony adres URL mongoDB nie istnieje. Aby to naprawić, musisz przejść do folderu „.. \ server \ config \ environment” i edytować w pliku „development.js” łącze do mongoDB.
Przykład:
Więc zmień to "uri: 'mongodb: // localhost / test2-dev'" na jakąś rzeczywistą ścieżkę do bazy danych mongoDB.
Będzie mi miło, jeśli mój post komuś pomoże ...
źródło
znajdź w module npm mongodb ..node_modules \ mongodb \ node_modules \ bson \ ext \ index.js
i zmień ścieżkę na wersję js w bloku catch
do
bson = require('../browser_build/bson');
źródło