Impossibile trovare il codice del modulo '../build/Release/bson']: 'MODULE_NOT_FOUND'} js-bson: impossibile caricare l'estensione cson bson, utilizzando la versione JS pura


156

Ricevo l'errore di seguito:

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' } 
  js-bson: Failed to load c++ bson extension, using pure JS version

Ecco i dettagli della mia versione:

  • Sistema operativo: Windows 7

  • MongoDB: 2.6.5

  • Nodo: 0.12.0

Ho provato queste cose prima di pubblicare il problema qui.

  1. Sono andato alla \node-modules\mongoose\node-modules\mongodb\node-modules\bsoncartella e ho apportato le seguenti modifiche nel file binding-gyp da 'include_dirs': [ '<!(node -e "require(\'nan\')")' ] a 'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]

  2. Ho eseguito questo comando npm install -g node-gyp

  3. Ho aggiornato la versione della mangusta al 3.8.21 all'interno package.json

Niente funziona. Per favore, suggerisci


2
Ho provato di seguito le opzioni suggerite da te, ma senza alcun risultato. Ricevo sotto l'errore {[Errore: Impossibile trovare il modulo '../build/Release/bson'] codice: 'MODULE_NOT_FOUND'} js-bson: impossibile caricare l'estensione c ++ bson, utilizzando la versione JS c c: \ raj \ project \ meandemo \ node_modules \ express \ lib \ router \ route.js: 170 genera un nuovo errore (msg); ^ Errore: Route.get () richiede le funzioni di callback ma ha ottenuto un [oggetto indefinito] su Route. <anonimo>
navra


1
Si prega di vedere questa soluzione, spero che funzioni! Poiché l'estensione BSON C ++ è richiesta anche per molti altri moduli. La nota gentile che, questa soluzione è specifica per Microsoft-OS Win-7 stackoverflow.com/a/29714359/4154706
aitchkhan

Controlla anche le risposte a questa domanda: Impossibile caricare l'estensione cson
bson

Risposte:


165

Trova nel modulo npm mongodb:

.. \ node_modules \ MongoDB \ node_modules \ BSON \ ext \ index.js

Cambia percorso alla versione js nel blocco catch:

bson = require('../build/Release/bson');

Per:

bson = require('../browser_build/bson');

O copia il file in:

.. \ node_modules \ BSON \ accumulo \ BSON Release \

A partire dal:

.. \ node_modules \ BSON \ browser_build \ BSON


1
Eccezionale! Ambiente locale, quindi non dovrebbe succedere nulla di tragico.
Manatax,

4
bson = request ('../../../ browser_build / bson.js');
Robor78,

25
Questa non è una soluzione. Con lo stesso risultato puoi semplicemente rimuovere le stringhe che stampano errori. Questo errore appare a causa del plug-in c ++ nativo per bson non trovato e in questo caso verrà comunque utilizzata la realizzazione js.
Alendorff,

4
@Alendorff Vero, ma è quello che la maggior parte di noi cerca. Non mi interessa il plug-in C ++, voglio sbarazzarmi degli avvertimenti perché rompono Node Inspector. Da questo punto di vista, anche il tuo suggerimento (rimozione delle stampe di errori) è una soluzione, poiché questo non dovrebbe essere un errore, il codice funziona bene con il fallback JS.
totymedli,

3
Siamo spiacenti, il downvoting come la seconda migliore risposta qui in realtà ha la soluzione giusta, non hack: installare una versione non rotta del pacchetto!
jrista,

70

Ho avuto questo problema oggi (19 febbraio 2016) e l'ho risolto installando l'ultima versione di Mongoose. Prova a metterlo nel tuo package.json:

"mongoose": "~4.4"

Spero che aiuti. Risolto per me!


1
Ha funzionato per me. Penso che sia tutto un problema con una vecchia versione di mangusta, che ho avuto seguendo un vecchio tutorial. IMO questa dovrebbe essere la risposta corretta.
Edward Newell,

8
La migliore risposta, tutti gli altri sulla modifica del codice all'interno dei moduli sono hack non soluzioni
bicicletta il

2
La soluzione più semplice senza la necessità di pasticciare con node_modules / mongodb ecc. Grazie!
Mike

1
Uno dei migliori, basta disinstallare mongoose (npm uninstall mongoose) e reinstallarlo di nuovo (npm install mongoose)
Grijan

18

Il problema è che quando si installa mongoose tramite npm, si presuppone che Python sia installato su Windows e si tenta di creare le librerie richieste. Dato che non hai Python salta la fase di costruzione con un avviso. Ma quando avvii la tua applicazione, i moduli richiesti non sono presenti, quindi ottieni questo errore.

Per fare le cose nel modo giusto prima installa python (versione 2.7) sul tuo computer da: https://www.python.org/downloads/ o se hai installato chockolatey basta digitare choco install python2.

Quindi assicurati che la tua variabile python sia impostata. Puoi impostarlo sul prompt dei comandi come:

SET python=D:\Python27\python.exe

(Naturalmente dovresti cambiare il percorso in base alla tua posizione di Python) Quindi installa node-gyp:

npm install -g node-gyp

Ora puoi reinstallare mongoose o qualunque modulo che causa il problema:

npm install mongoose

Questa volta vedrai alcune linee gialle anziché rosse ma l'errore sparirà.


2
La versione di Python è importante. node-gyp non funziona con la versione> 3.0
MatthieuLemoine,

1
Questa non è una soluzione completa ... Ricevo ancora il seguente errore: MSBUILD: errore MSB3428: Impossibile caricare il componente Visual C ++ "VCBuild.exe".
orszaczky,

@TheRebel Sta assumendo toolchain vs2010. Aggiungi --msvs-version=2012o 2013edipende da cosa hai installato. ad esnpm install mongoose --msvs-version=2012
RichieRich,

cosa fare se sto implementando l'app nodo sul cloud di Heroku.
jsbisht,

15

Ho risolto questo problema installando la versione mogoose 3.8.23

npm install mongoose@3.8.23

lavorato qui. è una versione precedente? perché ha funzionato?
Victor Ferreira,

15

Questo ha funzionato per me. Cerca nell'area di lavoro il testo:

"../build/Release/bson"

Lo troverai probabilmente all'interno dei moduli mongose ​​e monk.

Quindi sostituire ciascuno:

bson = require('../build/Release/bson');

con:

bson = require('bson');

È tutto!


Stavo ottenendo questo errore nel tentativo di eseguire i test predefiniti dopo aver impostato un progetto utilizzando meanjs. Questo l'ha risolto. Grazie.
RaneWrites

7

Prova npm install mongoose@3.8.23e sostituisci anche bson = require('../build/Release/bson');a

bson = require('../browser_build/bson'); in node_modules / bson / ext / index.js


Assicurarsi che il percorso di bson.js sia corretto. Per me bson = require ('../ browser_build / bson.js'); lavorato. Controlla anche la versione mongoose prima di procedere con l'installazione.
Vikram Shetty,

7

Questo ha funzionato per me:

Vai al file (nel tuo progetto):

node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js

e cambia:

bson = require('../build/Release/bson');

per:

bson = require('bson');

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


2
Come hai fatto a mantenere questa correzione persistente? Hai controllato la tua node_modulesdirectory nel controllo del codice sorgente?
Mark Stosberg,

7

Risposta breve

Installa l'ultima versione di mongodb.

Una risposta un po 'più lunga

Assicurati che package.json stia utilizzando l'ultima versione di mongodb, quindi rimuovi node_modules / mongodb ed esegui di nuovo l'installazione di npm. Se non hai usato mongodb come dipendenza diretta, prova a trovare quale pacchetto sta usando mongdb. Ero solito:

find . -type f -name package.json | xargs grep mongodb
...
./sails-mongo/package.json:    "mongodb": "1.4.26",
...

Quindi ho aggiornato ./sails-mongo/package.json a:

"mongodb": "2.1.7",

Quindi rimuovere node_modules / mongodb e ripetere l'installazione di npm. Ora sembra a posto.

Risposta ancora più lunga

Non mi piace l'attuale modo suggerito di utilizzare

require('../browser_build/bson')

Da quando ho visto ../browser_build/bson.js, un file 4k + righe, che sembra anche un'implementazione "non nativa". Quindi, anche se non sputerà alcun reclamo, sta ancora "usando la versione JS pura", il che significa prestazioni più lente.

Guardando https://github.com/mongodb/js-bson/issues/145 e https://github.com/mongodb/js-bson/issues/165 , sembra che il problema sia stato causato da:

antoniofruci ha commentato il 15 set 2015

Ho appena scoperto che il codice c ++ è stato spostato 6 mesi fa e ora è una dipendenza opzionale: bson-ext. Infatti, se si installa l'ultima versione non si verifica alcun errore.

Quindi ho provato a rimuovere l'intero node_modules e ho ancora ottenuto lo stesso errore. E guardando package.json di node_modules / mongodb, la sua versione è ancora 1.4.26, non l'ultima 2.1.7.

Apparentemente il mio mongodb nasce come dipendenza da un altro pacchetto che ho installato: sails-mongo. La modifica del pacchetto.json di sails-mongo e la ripetizione di npm install finalmente risolvono il problema.


6

Distribuzione di Keystone JS CMS Ho avuto lo stesso errore e penso che la soluzione più elegante sia questa:

Installa npm-check-updates:

root@keystonejs:~# npm install -g npm-check-updates

Nella directory del sito keystone, dove package.jsonsi trova, controlla le dipendenze:

debian@keystonejs:~/myproject/manalcjim$ npm-check-updates -u

Quindi aggiorna tutti i pacchetti:

debian@keystonejs:~/myproject/manalcjim$ npm install

E infine se hai scelto i jademodelli, forse avrai bisogno del jademodulo di installazione esplicitamente:

debian@keystonejs:~/myproject/manalcjim$ npm install jade --save

5

La risposta contrassegnata è completamente sbagliata. Tutto ciò che fa è nascondere l'istruzione di registro della console e non fa nulla per risolvere il problema. Puoi anche chiudere gli occhi e otterrai lo stesso risultato.

Il problema è causato da node-gyp e solo quello. Il suo scopo è compilare estensioni native per determinati moduli come bson.

Se non riesce a farlo , allora il codice fallback alla versione JS e gentilmente dirvi in modo attraverso il messaggio informativo:

Failed to load c++ bson extension, using pure JS version

Suppongo che la domanda riguardi davvero come compilare l'estensione C ++ nativa piuttosto che non vedere il messaggio, quindi affrontiamolo.

Affinché node-gyp funzioni, il tuo node-gyp deve essere aggiornato con il tuo nodo e il compilatore C ++ (che differiranno in base al tuo sistema operativo). Altrettanto importante anche il tuo modulo deve essere aggiornato.

Innanzitutto disinstallare e reinstallare node-gyp

npm un node-gyp -g;npm i node-gyp -g

Ora dovrai disinstallare e reinstallare completamente qualsiasi modulo del nodo nella tua app (che includa anche i moduli installati dai requisiti) che abbia bson. Questo dovrebbe occuparsi dell'errore. Puoi cercare "Release / bson" e trovare i colpevoli.

find node_modules/ -type 'f' -exec grep -H 'Release/bson' {} \;

Quindi disinstallare e reinstallare questi moduli.

È più semplice ripetere l'intera node_modulescartella:

 rm -rf node_modules
 npm cache clear
 npm i

Se i problemi persistono, 1) il tuo modulo non è aggiornato - controlla il tracker dei problemi nel loro repository o 2) hai un potenziale conflitto - a volte potremmo avere un nodo-gyp locale, ad esempio. Puoi eseguire node-gypda solo e verificare le versioni.


5

Durante la creazione dell'installazione per www.spotdekho.comnella nuova windows10macchina, non sono stato in grado di eseguire il comando a "nodemon web.js" causa dello stesso errore

"Errore: impossibile trovare il modulo '../build/Release/bson'"

Ho risolto con i passaggi seguenti:

  1. Crea la cartella "Rilascia" all'interno della posizione "node_modules \ bson \ build \"
  2. Copia bson.js da "node_modules \ bson \ browser_build \"
  3. Incolla bson.js nella cartella "node_modules \ bson \ build \ Release".

Questo risolverà il problema.

PS: sto usando la versione mangusta 4.8.8.

Grazie :), spero che aiuti qualcuno.


4

Nel mio caso, i bit forniti con mongoose ( npm install mongoose) hanno una versione funzionante del mongodbpacchetto nella sua node_modulescartella.

I seguenti passaggi mi hanno salvato il lavoro di risoluzione del problema:

  • npm install mongoose
  • copia node_modules\mongoose\node_modules\mongodbnella mia node_modulescartella principale (sovrascrivendo qualsiasi versione fornita npm install mongodb)
  • ignora l' Failed to load c++ bson extension...errore (o modifica il codice per rendere silenzioso il problema)

3

Quando stavo ricevendo errori come questo, stavo aggiornando dal nodo v0.10 al nodo v4.xx. Quello che dovevo fare era installare una versione più recente di gcc (penso di avere gcc v4.4.x o qualcosa del genere). Ho aggiornato a gcc 4.7.2 e le cose hanno funzionato dopo.


3

Ho anche avuto lo stesso problema con bson.

provando una nuova versione della mangusta

npm install mongoose@4.4

risolto il problema.

Massimo.


3

Esegui questo comando per disinstallare mongoose npm uninstall --save mongoose- successivamente reinstallalo ma questa volta npminstalla automaticamente l'ultima versione di mongoose run npm install --save mongooseHa funzionato per me.


2

Sfortunatamente, tutte le risposte di cui sopra sono solo la metà. Ho impiegato molto tempo per capirlo ..

Mongoose bson si installa tramite npm genera un avviso e causa l'errore ...

npm install -g node-gyp

git clone https://github.com/mongodb/js-bson.git
cd js-bson
npm install
node-gyp rebuild

Funziona come per magia !!


2

Se stai usando Windows 8.1, potresti voler assicurarti di installare i tuoi moduli npm con il compilatore di Visual Studio corretto.

Ho installato Visual Studio 2012, questo comando funziona per me. (dopo aver eliminato dir_modules node)

npm install --msvs_version = 2012

Per qualche motivo, node-gyp sta tentando di utilizzare la versione errata del compilatore di Visual Studio. Ho anche notato che il comando "npm install" stava stampando un avvertimento su non dipendenze nodo-gyp durante l'installazione dei moduli mongodb e mongoose.

Dopo aver utilizzato la versione msvs_version corretta, gli avvisi di installazione di npm sono scomparsi e l'avviso della console durante l'esecuzione della mia app nodejs.

Potresti anche assicurarti di aver installato la versione corretta di Python 2.7.X e non Python 3.0.X.

Dovrai anche assicurarti che python sia nel tuo percorso env.


Questo ha funzionato per me su Windows 8.1 con Visual Studio Community Edition 2013 utilizzandonpm install --msvs_version=2012
phocks

2

L'unica cosa che mi aiuta su Windows 7 (x64): https://stackoverflow.com/a/29714359/2670121

Reinstalla nodo e python con le versioni x32.
Ho trascorso molto tempo con questo errore (Impossibile caricare l'estensione cson bson) e infine, quando ho installato il modulo node-gyp(per creare componenti aggiuntivi nativi) e persino installato Windows SDK con Visual Studio - nodejs non riconosceva il modulo assemblato bson.node come modulo. Dopo aver reinstallato il problema è scomparso.

Ancora una volta, cosa significa questo errore?

In realtà, non è nemmeno un errore. Puoi ancora usare la mangusta. Ma in questo caso, invece della rapida realizzazione nativa del modulo bson, hai ottenuto la realizzazione js, che è più lenta. Ho visto molti suggerimenti come: "modifica il percorso in profondità all'interno di node_modules ..." - che è totalmente inutile perché non risolve il problema ma ha semplicemente disattivato i messaggi di errore.



1

Non modificare mai i file nella cartella della libreria NODE_MODULES.

Questi file sono il risultato di npm install comando.

Fondamentalmente, penso per gli utenti Windows: il modo giusto è usare la VM. È quello che sto facendo quando lavoro da casa.

Tutto ciò di cui hai bisogno:

for CentOS: yum install gcc gcc-c++ make openssl-devel

for Debian/Ubuntu: apt-get install build-essential

e poi npm installoppure, se l'hai già fatto -npm update


Dice proprio nella domanda che sta usando Windows 7: in che modo aiutano i comandi CentOS e Debian?
Thronk,

1
Oh, davvero, mia cattiva. Non ho visto quel tag
Victor Perov

1

La soluzione migliore per me era aggiornare da node-mongodb 1.xa 2.x.


1

Mi rendo conto che questo thread ha più di 1 anno, ma mi ha aiutato, anche se con un modulo diverso.

Ho installato mongoose-post-findv0.0.2 e questo problema è iniziato. Per risolvere il problema, ho usato i suggerimenti e sono passato a \ node_modules \ mongoose-post-find \ node_modules \ bson \ ext e ho aperto il file index.js.

Il file inizia con un blocco catch catch che tenta di richiedere la versione bson corretta

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

questa è la versione corretta. Quello che stava succedendo è stato il tentativo di caricare bson da ../build/Release/bson, non è riuscito a trovarlo e si è bloccato. Si è tentato di caricare nuovamente bson da ../build/Release/bson e ovviamente non è riuscito. Quindi cambio il percorso nella cattura per cercare in ../browser_build/bson. Questo ha risolto l'errore.

Pubblico questo per completezza.


1

Ho avuto lo stesso problema dopo l'aggiornamento della versione di Ubuntu a 16.04. Ho risolto in questo modo, spero che aiuti.

$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install

1

Nel nostro caso, il motivo per cui la versione c ++ bson non è stata trovata era perché eravamo dietro un proxy aziendale e qualcosa nel processo di compilazione BSON deve raggiungere i file. Quando abbiamo guardato in node_modules / bson / builderror.log, abbiamo visto un errore come questo:

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)

Il che ha suggerito che il problema potrebbe essere rappresentato dal proxy. L'impostazione delle variabili di ambiente http_proxy e https_proxy ha risolto il problema.

Ci scusiamo per il risveglio dei commenti su questo, ma volevo pubblicarlo per chiunque altro lo colpisse in futuro poiché questa discussione è stata molto utile per risolvere il nostro problema.


0

Ho provato npm install mongoose --msvs_version = 2012, se hai installato più Visual, ha funzionato per me


0

Primobson.js codice copia dabrowser_build folder

in secondo luogo creare un nuovo file bson.jse incollare il codice

terzo salva il nuovo file vicino a in index.js.


0

Sto lavorando con il sistema operativo Windows 8.1 e ho avuto lo stesso problema. La fonte del problema era la versione di Python. Ho riscontrato che il problema di origine ha esaminato il file ... \ node_modules \ mongodb \ node_modules \ mongodb-core \ node_modules \ kerberos \ builderror.log.

Ho installato la versione corretta di Python (2.7.9 per 64 bit) e ho risolto il mio problema.

Nota: la versione installata di python deve essere uguale o superiore a 2.7.5 e inferiore a 3.0.0


0

Ho provato bson = require('../browser_build/bson');ma finisco per imbattermi in un altro errore

Impossibile impostare la proprietà 'BSON_BINARY_SUBTYPE_DEFAULT' su non definita

Alla fine ho risolto questo problema semplicemente npm update, questo risolverà il modulo bson in mongoose.


0

Quindi, ho lo stesso problema e succede che l'URL mongoDB specificato non esiste. Quindi, per risolvere questo problema, devi andare nella cartella ".. \ server \ config \ environment" e modificare nel file "development.js" il link a mongoDB.

Esempio:

// Development specific configuration
// ==================================
module.exports = {
  // MongoDB connection options
  mongo: {
    uri: 'mongodb://localhost/test2-dev'
  },

  seedDB: true
};

Quindi, cambia questo "uri: 'mongodb: // localhost / test2-dev'" in un percorso reale al tuo database mongoDB.

Sarò felice se il mio post aiuterà qualcuno ...


0

trova nel modulo npm mongodb ..node_modules \ mongodb \ node_modules \ bson \ ext \ index.js

e cambia il percorso alla versione js nel blocco catch

bson = require('../build/Release/bson');

per 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');
        }
    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.