it-swarm.com.de

Modul '../build/Release/bson'] - Code: 'MODULE_NOT_FOUND'} kann nicht gefunden werden

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.

  1. 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.

  2. Lief diesen Befehl npm install -g node-gyp

  3. Ich habe die Mongoose-Version in package.json auf 3.8.21 aktualisiert.

Nichts funktioniert. Bitte vorschlagen

155
navra

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

162
anydasa

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!

68
Matt West

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.

18
salihcenap

Ich habe dieses Problem durch Installieren der Mogoose-Version 3.8.23 behoben.

npm install [email protected]
15
Rishabh Garg

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!

15
kahlal

Kurze Antwort

Installieren Sie die neueste Version von Mongodb.

Antwort etwas länger

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.

Noch längere Antwort

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.

7
Peter

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 

7

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');

Referenz: https://github.com/mongodb/js-bson/issues/118

7
Franco

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
6
Manuel Alcocer

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.

5
cyberwombat

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:

  1. Erstellen Sie den Ordner "Release" im Verzeichnis "node_modules\bson\build \"
  2. Kopieren Sie bson.js aus "node_modules\bson\browser_build \" 
  3. 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.

5
Spotdekho

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)
  • ignorieren Sie den Failed to load c++ bson extension...-Fehler (oder ändern Sie den Code so, dass er bei dem Problem nicht angezeigt wird).
4
Michael

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. 

3
B T

Ich hatte auch das gleiche Problem mit bson.

versuch eine neuere Mungo-Version

npm install [email protected]

das Problem gelöst.

Massimo.

3
Max Tamtam

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. 

3
otoloye

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.

2
Alendorff

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.

2
Joseph Snow

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 !!

2
Rama Prashanth

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

1
Victor Perov

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
1
Enrico Giurin

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.

1
Paul Stoner

Probieren Sie diese npm install bson und npm update

1

Die beste Lösung für mich war ein Upgrade von node-mongodb 1.x auf 2.x.

1
jczaplew

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. 

1
Matt M.

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.

0
S.J. Lin

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

0
hbuenoc

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 ...

0
Vasilic Maxim

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.

0
rktel

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');
        }
    }
0
user3168528

Versuchte npm install mongoose --msvs_version = 2012, wenn mehrere Visuals installiert sind, hat es für mich funktioniert

0
AKID Ahmed

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');
    }
}
0
SambitD

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');

0
Felipe

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

0
Alendorff

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.

0
unclejimbo