Ich erhalte die folgende Fehlermeldung:
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
js-bson: Failed to load c++ bson extension, using pure JS version
Hier sind meine Versionsdetails:
Betriebssystem: Windows 7
MongoDB: 2.6.5
Knoten: 0,12,0
Ich habe diese Dinge ausprobiert, bevor ich die Ausgabe hier veröffentlicht habe.
Ich ging zum \node-modules\mongoose\node-modules\mongodb\node-modules\bson
-Ordner und nahm unten in der Bindungs-Gyp-Datei Von 'include_dirs': [ '<!(node -e "require(\'nan\')")' ]
to 'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]
eine Änderung vor.
Lief diesen Befehl npm install -g node-gyp
Ich habe die Mongoose-Version in package.json
auf 3.8.21 aktualisiert.
Nichts funktioniert. Bitte vorschlagen
In npm module mongodb finden:
..\node_modules\mongodb\node_modules\bson\ext\index.js
Pfad in js-Version im catch-Block ändern:
bson = require('../build/Release/bson');
Zu:
bson = require('../browser_build/bson');
Oder kopiere die Datei in:
..\node_modules\bson\build\Release\bson
Von:
..\node_modules\bson\browser_build\bson
Ich hatte diese Ausgabe heute (19. Februar 2016) und konnte dieses Problem durch Installieren der neuesten Version von Mongoose lösen. Versuchen Sie, dies in Ihre package.json aufzunehmen:
"mongoose": "~4.4"
Hoffentlich hilft das. Für mich gelöst!
Das Problem besteht darin, dass Sie bei der Installation von mongoose über npm davon ausgehen, dass Sie Python unter Windows installiert haben und die erforderlichen Bibliotheken erstellen möchten. Da Sie keinen Python haben, wird die Bauphase mit einer Warnung übersprungen. Wenn Sie jedoch Ihre Anwendung starten, sind die erforderlichen Module nicht vorhanden, so dass Sie diesen Fehler erhalten.
Um dies richtig zu machen, installieren Sie zunächst Python (Version 2.7) auf Ihrem Computer von: https://www.python.org/downloads/ oder wenn Sie chockolatey installiert haben, geben Sie choco install python2
ein.
Stellen Sie dann sicher, dass Ihre Python-Variable festgelegt ist. Sie können es bei der Eingabeaufforderung wie folgt einstellen:
SET python=D:\Python27\python.exe
(Natürlich sollten Sie den Pfad entsprechend Ihrer Position von Python ändern.) .__ Installieren Sie anschließend node-gyp:
npm install -g node-gyp
Jetzt können Sie mongoose oder das Modul, das das Problem verursacht, erneut installieren.
npm install mongoose
Sie werden diesmal einige gelbe statt rote Linien sehen, aber der Fehler wird verschwinden.
Ich habe dieses Problem durch Installieren der Mogoose-Version 3.8.23
behoben.
npm install [email protected]
Das hat bei mir funktioniert. Suchen Sie in Ihrem Arbeitsbereich nach dem Text:
"../build/Release/bson"
Sie finden es wahrscheinlich in den Modulen Mongose und Mönch.
Dann ersetzen Sie jedes:
bson = require('../build/Release/bson');
mit:
bson = require('bson');
das ist alles!
Installieren Sie die neueste Version von Mongodb.
Stellen Sie sicher, dass Ihre package.json die neueste Version von mongodb verwendet, Entfernen Sie anschließend node_modules/mongodb und führen Sie die npm-Installation erneut aus. Wenn Sie mongodb nicht als direkte Abhängigkeit verwendet haben, versuchen Sie herauszufinden, welches Paket mongdb verwendet. Ich benutzte:
find . -type f -name package.json | xargs grep mongodb
...
./sails-mongo/package.json: "mongodb": "1.4.26",
...
Also habe ich ./sails-mongo/package.json folgendermaßen aktualisiert:
"mongodb": "2.1.7",
Entfernen Sie anschließend node_modules/mongodb und führen Sie die npm-Installation erneut aus. Scheint jetzt gut.
Ich mag die derzeit vorgeschlagene Verwendungsweise nicht
require('../browser_build/bson')
Seit dem Betrachten von ../browser_build/bson.js eine 4k + -Lines-Datei, die auch eine "nicht native" Implementierung zu sein scheint. Obwohl es keine Beschwerden ausspuckt, verwendet es immer noch "reine JS-Version", was eine langsamere Leistung bedeutet.
Bei https://github.com/mongodb/js-bson/issues/145 und https://github.com/mongodb/js-bson/issues/165 scheint es so Problem wurde verursacht durch:
antoniofruci hat kommentiert am 15 Sep 2015
Ich habe gerade herausgefunden, dass der C++ - Code vor 6 Monaten verschoben wurde und nun eine optionale Abhängigkeit ist: bson-ext. Wenn Sie die neueste Version installieren, tritt kein Fehler auf.
Also habe ich versucht, die gesamten node_modules zu entfernen und habe trotzdem den gleichen Fehler erhalten. Wenn Sie die package.json von node_modules/mongodb betrachten, ist ihre Version immer noch 1.4.26, nicht die neueste Version 2.1.7.
Anscheinend kommt mein mongodb als eine Abhängigkeit von einem anderen Paket, das ich installiert habe: sails-mongo. Durch das Ändern des package.json von sails-mongo und das erneute Ausführen von npm install ist das Problem endgültig gelöst.
Versuchen Sie npm install [email protected]
und ersetzen Sie bson = require('../build/Release/bson');
in
bson = require('../browser_build/bson');
in node_modules/bson/ext/index.js
Das hat bei mir funktioniert:
Gehen Sie zu der Datei (in Ihrem Projekt):
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
und ändern:
bson = require('../build/Release/bson');
zu:
bson = require('bson');
Deployment von Keystone JS CMS Ich hatte denselben Fehler und ich denke, die eleganteste Lösung ist folgende:
npm-check-updates
installieren:
[email protected]:~# npm install -g npm-check-updates
Überprüfen Sie in Ihrem Keystone-Site-Verzeichnis, in dem sich package.json
befindet, Abhängigkeiten:
[email protected]:~/myproject/manalcjim$ npm-check-updates -u
Dann aktualisieren Sie alle Pakete:
[email protected]:~/myproject/manalcjim$ npm install
Und schließlich, wenn Sie jade
für Vorlagen gewählt haben, müssen Sie möglicherweise das Modul jade
explizit installieren:
[email protected]:~/myproject/manalcjim$ npm install jade --save
Die markierte Antwort ist völlig falsch. Alles, was Sie tun, ist, die Konsolenprotokollanweisung auszublenden und nichts, was auch immer das eigentliche Problem angeht. Sie können auch Ihre Augen schließen und es wird das gleiche Ergebnis erzielt.
Das Problem wird durch node-gyp verursacht und nur das. Sein Zweck ist es, native Erweiterungen für bestimmte Module wie bson zu kompilieren.
Wenn dies nicht der Fall ist dann , wird der Code auf die JS-Version zurückgreifen und es Ihnen freundlicherweise durch die informative Nachricht mitteilen:
Failed to load c++ bson extension, using pure JS version
Ich gehe davon aus, dass es sich bei der Frage wirklich darum handelt, wie die native C++ - Erweiterung kompiliert werden soll und dass die Nachricht einfach nicht angezeigt wird.
Damit node-gyp funktionieren kann, muss der node-gyp mit Ihrem Knoten und C++ - Compiler auf dem neuesten Stand sein (dies hängt von Ihrem Betriebssystem ab). Ebenso wichtig muss Ihr Modul auf dem neuesten Stand sein.
Deinstallieren Sie zunächst node-gyp
npm un node-gyp -g;npm i node-gyp -g
Jetzt müssen Sie alle Knotenmodule in Ihrer App vollständig deinstallieren und erneut installieren (dazu gehören auch die nach Bedarf installierten Module), die über bson verfügen. Das sollte sich um den Fehler kümmern. Sie können nach 'Release/bson' suchen und die Täter finden.
find node_modules/ -type 'f' -exec grep -H 'Release/bson' {} \;
Deinstallieren Sie diese Module und installieren Sie sie erneut.
Einfacher ist es, nur den gesamten node_modules
-Ordner erneut auszuführen:
rm -rf node_modules
npm cache clear
npm i
Wenn immer noch Probleme auftreten, ist entweder 1) Ihr Modul nicht mehr aktuell - überprüfen Sie den Issue-Tracker im Repo oder 2) Sie haben einen potenziellen Konflikt - manchmal haben wir beispielsweise einen lokalen Knoten-Gyp. Sie können node-gyp
alleine ausführen und die Versionen überprüfen.
Beim Erstellen des Setups für www.spotdekho.com
in der neuen windows10
-Maschine konnte ich den Befehl "nodemon web.js"
aufgrund des gleichen Fehlers nicht ausführen
"Fehler: Modul '../build/Release/bson' kann nicht gefunden werden" "
Habe es durch folgende Schritte behoben:
- Erstellen Sie den Ordner "Release" im Verzeichnis "node_modules\bson\build \"
- Kopieren Sie bson.js aus "node_modules\bson\browser_build \"
- Fügen Sie bson.js in den Ordner "node_modules\bson\build\release" ein.
Dadurch wird das Problem behoben.
PS: Ich verwende Mongoose Version 4.8.8.
Danke :), hoffe es hilft jemandem.
In meinem Fall haben die mit mongoose (npm install mongoose
) gelieferten Bits eine funktionierende Version des Pakets mongodb
im Ordner node_modules
.
Die folgenden Schritte haben mir die Arbeit mit der Problembehandlung erspart:
npm install mongoose
node_modules\mongoose\node_modules\mongodb
in meinen Stammordner node_modules
kopieren (alle mit npm install mongodb
gelieferten Versionen überschreiben)Failed to load c++ bson extension...
-Fehler (oder ändern Sie den Code so, dass er bei dem Problem nicht angezeigt wird).Bei solchen Fehlern wurde ein Upgrade von Knoten v0.10 auf Knoten v4.x.x durchgeführt. Ich musste eine neuere Version von gcc installieren (ich glaube, ich hatte gcc v4.4.x oder so). Ich habe auf gcc 4.7.2 aktualisiert und danach funktionierte alles.
Ich hatte auch das gleiche Problem mit bson.
versuch eine neuere Mungo-Version
npm install [email protected]
das Problem gelöst.
Massimo.
Führen Sie diesen Befehl aus, um mongoose npm uninstall --save mongoose
zu deinstallieren - danach neu installieren, aber diesmal installiert npm
automatisch die neueste Version von mongoose run npm install --save mongoose
. Dies hat bei mir funktioniert.
Das einzige, was mir unter Windows 7 (x64) hilft: https://stackoverflow.com/a/29714359/2670121
Installieren Sie Knoten und Python mit x32-Versionen neu.
Ich verbrachte viel Zeit mit diesem Fehler (C++ bson-Erweiterung konnte nicht geladen werden) und schließlich, als ich das Modul node-gyp
(für native Builds für Builds) installierte und sogar Windows SDK mit Visual Studio installierte - nodejs erkannte das bson-Modul nicht. Knoten als Modul. Nach der Neuinstallation ist das Problem weg.
Wieder was bedeutet dieser Fehler?
Eigentlich ist es gar kein Fehler. Sie können immer noch Mungo verwenden. Aber in diesem Fall haben Sie anstelle der schnellen nativen Realisierung des bson-Moduls die js-Realisierung erhalten, die langsamer ist. Ich habe viele Tipps gesehen wie: "Pfad tief in node_modules bearbeiten ..." - was völlig nutzlos ist, da es das Problem nicht löst, sondern nur die Fehlermeldungen deaktiviert hat.
Wenn Sie Windows 8.1 verwenden, möchten Sie möglicherweise sicherstellen, dass Sie Ihre npm-Module mit dem richtigen Visual Studio-Compiler installieren.
Ich habe Visual Studio 2012 installiert, dieser Befehl funktioniert für mich .. (nachdem ich node_modules dir gelöscht habe)
npm install --msvs_version = 2012
Aus irgendeinem Grund versucht node-gyp, die falsche Version des Visual Studio-Compilers zu verwenden. Ich habe auch bemerkt, dass der Befehl "npm install" beim Installieren der Module mongodb und mongoose Warnungen ausgegeben hat, dass keine Abhängigkeit von Knoten und Gyp besteht.
Nachdem Sie die korrekte msvs_version verwendet haben, wurden die npm-Installationswarnungen sowie die Konsolenwarnung beim Ausführen meiner nodejs-App weggenommen.
Möglicherweise möchten Sie auch sicherstellen, dass Sie die richtige Version von Python 2.7.X und nicht Python 3.0.X installiert haben.
Sie müssen auch sicherstellen, dass sich Python in Ihrem Env-Pfad befindet.
Leider sind alle obigen Antworten nur zur Hälfte richtig. Ich habe lange gebraucht, um das herauszufinden.
Mongoose bson install via npm gibt eine Warnung aus und verursacht den Fehler ...
npm install -g node-gyp
git clone https://github.com/mongodb/js-bson.git
cd js-bson
npm install
node-gyp rebuild
Das funktioniert wie Magie !!
Sie sollten niemals Dateien im NODE_MODULES-Bibliotheksordner ändern.
Diese Dateien sind das Ergebnis des Befehls npm install
.
Grundsätzlich denke ich für Windows-Benutzer - richtig ist die Verwendung von VM. Das mache ich, wenn ich von zu Hause aus arbeite.
Alles was du brauchst:
for CentOS: yum install gcc gcc-c++ make openssl-devel
for Debian/Ubuntu: apt-get install build-essential
und dann npm install
oder, wenn Sie es bereits getan haben - npm update
Ich hatte das gleiche Problem nach der Upgrade-Version von Ubuntu auf 16.04. Ich habe auf diese Weise gelöst, hoffe es hilft.
$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install
Ich weiß, dass dieser Thread 1 Jahr alt ist, aber er hat mir geholfen, wenn auch mit einem anderen Modul.
Ich habe mongoose-post-findv0.0.2 installiert und dieses Problem wurde gestartet. Um das Problem zu beheben, habe ich die Vorschläge verwendet und zu\node_modules\mongoose-post-find\node_modules\bson\ext navigiert und die Datei index.js geöffnet.
Die Datei beginnt mit einem try catch-Block, der versucht, die korrekte bson-Version zu benötigen
try {
// Load the precompiled win32 binary
if(process.platform == "win32" && process.Arch == "x64") {
bson = require('./win32/x64/bson');
} else if(process.platform == "win32" && process.Arch == "ia32") {
bson = require('./win32/ia32/bson');
} else {
bson = require('../build/Release/bson');
}
} catch(err) {
// Attempt to load the release bson version
try {
bson = require('../browser_build/bson');
} catch (err) {
console.dir(err)
console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
bson = require('../lib/bson/bson');
}
}
dies ist die korrigierte Version. Was geschah ist, es wurde versucht, bson von ../build/Release/bson zu laden, konnte es nicht finden und fiel in den Haken. Es wird versucht, bson erneut von ../build/Release/bson zu laden und ist natürlich fehlgeschlagen. Also ändere ich den Pfad im catch und schaue in ../browser_build/bson. Dies hat den Fehler behoben.
Ich poste dies zur Vollständigkeit.
Probieren Sie diese npm install bson
und npm update
Die beste Lösung für mich war ein Upgrade von node-mongodb 1.x auf 2.x.
In unserem Fall war der Grund, warum die C++ - Version bson nicht gefunden wurde, weil wir hinter einem Firmen-Proxy standen und etwas im BSON-Build-Prozess zum Abrufen von Dateien benötigt wird. Als wir in node_modules/bson/builderror.log nachgesehen haben, haben wir einen Fehler wie diesen gesehen:
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)
Welches schlug vor, dass der Proxy das Problem sein könnte. Durch Setzen der Umgebungsvariablen http_proxy und https_proxy wurde das Problem gelöst.
Es tut uns leid, dass Sie dazu Kommentare wiedererweckt haben, aber ich wollte dies für alle anderen veröffentlichen, die dies in der Zukunft treffen, da dieser Thread bei der Lösung unseres Problems sehr hilfreich war.
Ich habe auch dieses Problem.
Aber ich ändere meinemongodbversion auf " ^ 2.2.33 " und habe das Problem nicht mehr.
Sie sollten npm rm
Ihr altes mongodb-Paket auf global oder lokal speichern und diese Version installieren.
Wenn jemand keine Nebenwirkung bei der Änderung des Richtungsnamens haben möchte, können Sie diese Methode ausprobieren.
Ich arbeite mit OS Windows 8.1 und hatte das gleiche Problem. Die Ursache des Problems war die Version von Python. Ich habe festgestellt, dass das Origin-Problem die Datei überprüft ...\knotenmodule\mongodb\knotenmodule\mongodb-core\knotenmodul\kerberos\builderror.log.
Ich habe die richtige Version von Python (2.7.9 für 64 Bit) installiert und damit mein Problem gelöst.
Hinweis: Die installierte Version von Python muss größer oder gleich 2.7.5 und kleiner als 3.0.0 sein
Ich habe also das gleiche Problem und es kommt vor, dass die angegebene MongoDB-URL nicht existiert. Um dies zu beheben, müssen Sie den Ordner "..\server\config\environment" aufrufen und in "development.js" die Verknüpfung zu mongoDB bearbeiten.
Beispiel:
// Development specific configuration
// ==================================
module.exports = {
// MongoDB connection options
mongo: {
uri: 'mongodb://localhost/test2-dev'
},
seedDB: true
};
Ändern Sie also "uri: 'mongodb: // localhost/test2-dev'" in einen echten Pfad zu Ihrer MongoDB-Datenbank.
Ich würde mich freuen, wenn mein Beitrag jemandem helfen wird ...
Erster bson.js
-Code von browser_build folder
kopieren
second Neue Datei bson.js
erstellen und Code einfügen
dritte Speichern Sie die neue Datei in index.js
.
finden Sie in npm module mongodb ..node_modules\mongodb\node_modules\bson\ext\index.js
und ändere den Pfad zu js Version im catch-Block
bson = require('../build/Release/bson');
zu bson = require('../browser_build/bson');
try {
// Load the precompiled win32 binary
if(process.platform == "win32" && process.Arch == "x64") {
bson = require('./win32/x64/bson');
} else if(process.platform == "win32" && process.Arch == "ia32") {
bson = require('./win32/ia32/bson');
} else {
bson = require('../browser_build/bson');
}
} catch(err) {
// Attempt to load the release bson version
try {
bson = require('../browser_build/bson');
} catch (err) {
console.dir(err)
console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
bson = require('../lib/bson/bson');
}
}
Versuchte npm install mongoose --msvs_version = 2012, wenn mehrere Visuals installiert sind, hat es für mich funktioniert
Ich habe dies in Mongo-Sync Version 4.1.2 ausprobiert
sie haben jedoch einige Änderungen vorgenommen und funktionieren nicht mit den hier bereitgestellten Lösungen
die Lösung, die für mich funktioniert hat
Pfad node_modules/mongo-sync/node_modules/bson/ext/index.js
Alter Code
try {
// Load the precompiled win32 binary
if (process.platform == "win32" && process.Arch == "x64") {
bson = require('./win32/x64/bson');
} else if (process.platform == "win32" && process.Arch == "ia32") {
bson = require('./win32/ia32/bson');
} else {
bson = require('../build/Release/bson');
}
} catch (err) {
// Attempt to load the release bson version
try {
bson = require('../build/Release/bson');
} catch (err) {
console.dir(err)
console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
bson = require('../lib/bson/bson');
}
}
Änderung im try-Block (Kopieren der bson-Initialisierung aus catch-Block)
bson = require('../lib/bson/bson');
So wird es aussehen
try {
// Load the precompiled win32 binary
if(process.platform == "win32" && process.Arch == "x64") {
bson = require('./win32/x64/bson');
} else if(process.platform == "win32" && process.Arch == "ia32") {
bson = require('./win32/ia32/bson');
} else {
bson = require('../build/Release/bson');
}
} catch(err) {
// Attempt to load the release bson version
try {
bson = require('../lib/bson/bson');
} catch (err) {
console.dir(err)
console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
bson = require('../lib/bson/bson');
}
}
Zuerst finde ich in npm module mongodb die Datei index.js ..node_modules\mongodb\node_modules\bson\ext\index.js
und ändern Sie den Pfad zur js-Version im catch-Block
bson = requir ('../build/Release/bson'); an bson = requir ('../ browser_build/bson');
aber dann habe ich es einfach so geändert, all das ähnelt ... vorher das Modul installiert ...: bson = required ('bson');
Für heute (Jahr 2017) haben wir dieses großartige npm-Modul: https://github.com/felixrieseberg/windows-build-tools , Das normalerweise viele Probleme mit dem Bau von einheimischen Dingen für Fenster löst.
Versuchen Sie das Problem zu beheben mit:
Remove node_modules
npm install --global windows-build-tools
npm install
Ich habe bson = require('../browser_build/bson');
ausprobiert, aber am Ende läuft ein anderer Fehler
Die Eigenschaft 'BSON_BINARY_SUBTYPE_DEFAULT' kann nicht für undefined festgelegt werden
Zum Schluss habe ich dieses Problem einfach mit npm update
behoben. Dadurch wird das bson-Modul in mongoose behoben.