web-dev-qa-db-fra.com

Impossible de trouver le module '../build/Release/bson'] code: 'MODULE_NOT_FOUND'} js-bson: échec du chargement de l'extension c ++ bson, à l'aide de la version JS pure.

Je reçois l'erreur ci-dessous:

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

Voici les détails de ma version:

  • OS: Windows 7

  • MongoDB: 2.6.5

  • Node: 0.12.0

J'ai essayé ces choses avant de poster le problème ici.

  1. Je suis allé dans le dossier \node-modules\mongoose\node-modules\mongodb\node-modules\bson et apporté ci-dessous la modification dans le fichier binding-gyp De 'include_dirs': [ '<!(node -e "require(\'nan\')")' ]to 'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]

  2. A exécuté cette commande npm install -g node-gyp

  3. J'ai mis à jour la version de mangouste à 3.8.21 dans package.json

Rien ne fonctionne. Veuillez suggérer

155
navra

Retrouvez dans le module npm mongodb:

..\node_modules\mongodb\node_modules\bson\ext\index.js

Changer le chemin de la version js dans le bloc catch:

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

À:

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

Ou copier le fichier dans:

..\node_modules\bson\build\Release\bson

De:

..\node_modules\bson\browser_build\bson

162
anydasa

J'ai eu ce problème aujourd'hui (19 février 2016) et je l'ai résolu simplement en installant la dernière version de Mongoose. Essayez de mettre ceci dans votre package.json:

"mongoose": "~4.4"

J'espère que cela pourra aider. Résolu pour moi!

68
Matt West

Le problème est que lorsque vous installez mongoose via npm, cela suppose que vous avez installé python sur vos fenêtres et essayez de créer les bibliothèques requises. Comme vous n'avez pas de python, la phase de construction est ignorée avec un avertissement. Mais lorsque vous démarrez votre application, les modules requis ne sont pas là, donc vous obtenez cette erreur. 

Pour faire les choses correctement, installez d’abord python (version 2.7) sur votre ordinateur à partir de: https://www.python.org/downloads/ ou si vous avez installé chockolatey, tapez simplement choco install python2.

Assurez-vous ensuite que votre variable python est définie. Vous pouvez le définir à l'invite de commande comme:

SET python=D:\Python27\python.exe

(Bien sûr, vous devriez changer le chemin en fonction de votre emplacement de python) Ensuite, installez node-gyp:

npm install -g node-gyp

Vous pouvez maintenant réinstaller Mangouste ou le module à l’origine du problème:

npm install mongoose

Vous verrez cette fois des lignes jaunes au lieu de rouges, mais l’erreur disparaîtra.

18
salihcenap

J'ai résolu ce problème en installant la version 3.8.23 de mogoose

npm install [email protected]
15
Rishabh Garg

Cela a fonctionné pour moi. Recherchez le texte dans votre espace de travail:

"../build/Release/bson"

Vous le trouverez probablement dans les modules mongos et moine.

Puis remplacez chacun:

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

avec:

bson = require('bson');

c'est tout!

15
kahlal

Réponse courte

Installez la dernière version de mongodb.

Réponse un peu plus longue

Assurez-vous que votre package.json utilise la dernière version de mongodb, Puis supprimez node_modules/mongodb et réinstallez npm. Si vous n’avez pas utilisé mongodb comme dépendance directe, essayez de trouver le paquet qui utilise mongdb. J'ai utilisé:

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

J'ai donc mis à jour ./sails-mongo/package.json à:

"mongodb": "2.1.7",

Ensuite, supprimez node_modules/mongodb et réinstallez NPM. Semble bien maintenant.

Réponse encore plus longue

Je n'aime pas la façon suggérée d'utiliser actuellement

require('../browser_build/bson')

Depuis, nous avons consulté ../browser_build/bson.js, un fichier de lignes de 4 k +, qui semble également une implémentation "non native". Ainsi, bien qu'il ne se plaint pas, il continue à "utiliser la version JS pure", ce qui signifie des performances plus lentes. 

En regardant https://github.com/mongodb/js-bson/issues/145 et https://github.com/mongodb/js-bson/issues/165 , il semble que le problème a été causé par:

antoniofruci a commenté le Sep 15, 2015

Je viens de découvrir que le code c ++ a été transféré il y a 6 mois et qu'il s'agit désormais d'une dépendance facultative: bson-ext. En effet, si vous installez la dernière version, aucune erreur ne se produit.

J'ai donc essayé de supprimer les node_modules entiers et j'ai toujours la même erreur. Et en regardant package.json de node_modules/mongodb, sa version est toujours la 1.4.26, pas la dernière 2.1.7.

Apparemment, mon mongodb est la dépendance d’un autre paquet que j’ai installé: sails-mongo. Modifier le package.json de sails-mongo et refaire l’installation de npm résolvent finalement le problème.

7
Peter

Essayez npm install [email protected] et remplacez également bson = require('../build/Release/bson'); par

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

7
Raghav Manikandan

Déploiement Keystone JS CMS J'ai eu la même erreur et je pense que la solution la plus élégante est la suivante:

Installez npm-check-updates:

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

Dans le répertoire de votre site Keystone, où package.json est placé, vérifiez les dépendances:

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

Puis mettez à jour tous les packages:

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

Enfin, si vous avez choisi jade pour les modèles, vous devrez peut-être installer le module jade explicitement:

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

La réponse marquée est complètement fausse. Cela ne fait que masquer l’instruction du journal de la console et ne fait absolument rien pour régler le problème. Vous pouvez également fermer les yeux et vous obtiendrez le même résultat.

Le problème est causé par node-gyp et seulement cela. Son but est de compiler des extensions natives pour certains modules tels que bson.

S'il ne parvient pas à le faire alors le code reviendra à la version de JS et vous le fera savoir par le message informatif suivant:

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

Je suppose que la question porte vraiment sur la manière de compiler l'extension C++ native plutôt que de ne pas voir le message, abordons-le.

Pour que node-gyp fonctionne, votre nœud-gyp doit être à jour avec votre nœud et votre compilateur C++ (cela dépend de votre système d'exploitation). Il est tout aussi important que votre module soit également à jour.

Commencez par désinstaller et réinstaller node-gyp

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

Vous devez maintenant désinstaller et réinstaller complètement tout module de noeud de votre application (y compris les modules installés par les exigences) doté de bson. Cela devrait remédier à l'erreur. Vous pouvez rechercher 'Release/bson' et trouver les coupables.

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

Et puis désinstallez et réinstallez ces modules.

Le plus simple est de simplement refaire tout le dossier node_modules:

 rm -rf node_modules
 npm cache clear
 npm i

Si vous rencontrez toujours des problèmes, alors 1) votre module est obsolète - vérifiez le suivi des problèmes dans son référentiel ou 2) vous avez un conflit potentiel - nous avons parfois un node-gyp local, par exemple. Vous pouvez exécuter node-gyp par lui-même et vérifier les versions.

5
cyberwombat

Lors de la création de la configuration pour www.spotdekho.com dans la nouvelle machine windows10, je n'ai pas pu exécuter la commande "nodemon web.js" en raison de la même erreur. 

"Erreur: impossible de trouver le module '../build/Release/bson'"

Je l'ai corrigé par les étapes ci-dessous:

  1. Créer le dossier "Release" à l'intérieur de "node_modules\bson\build \"
  2. Copiez le fichier bson.js à partir de "nœud_modules\bson\navigateur_gratuit \" 
  3. Collez bson.js dans le dossier "node_modules\bson\build\Release".

Cela résoudra le problème. 

PS: J'utilise la version 4.8.8 de mangouste.

Merci :), j'espère que ça aidera quelqu'un.

5
Spotdekho

Dans mon cas, les bits fournis avec mangouste (npm install mongoose) ont une version fonctionnelle du paquetage mongodb dans son dossier node_modules.

Les étapes suivantes m'ont évité le travail de résolution du problème:

  • npm install mongoose
  • copier node_modules\mongoose\node_modules\mongodb dans mon dossier racine node_modules (en écrasant toute version fournie avec npm install mongodb)
  • ignorer l'erreur Failed to load c++ bson extension... (ou changer le code pour qu'il soit muet sur le problème)
4
Michael

Lorsque des erreurs comme celle-ci se présentaient, je mettais à niveau le noeud v0.10 vers le noeud v4.x.x. Ce que je devais faire était d'installer une version plus récente de gcc (je pense que j'avais gcc v4.4.x ou quelque chose du genre). J'ai mis à jour la version 4.7.2 de gcc et les choses ont fonctionné par la suite. 

3
B T

J'ai aussi eu le même problème avec Bson.

essayer une nouvelle version de mangouste

npm install [email protected]

résolu le problème.

Massimo.

3
Max Tamtam

Exécutez cette commande pour désinstaller mongoose npm uninstall --save mongoose - puis réinstallez-le, mais cette fois npm installe automatiquement la dernière version de mongoose run npm install --save mongoose. Cela a fonctionné pour moi. 

3
otoloye

La seule chose qui m'aide sur Windows 7 (x64): https://stackoverflow.com/a/29714359/2670121

Réinstallez le noeud et le python avec les versions x32.
J'ai passé beaucoup de temps avec cette erreur (échec de chargement de l'extension c ++ bson) et enfin, lorsque j'ai installé le module node-gyp (pour les addons natifs de compilation) et même installé Windows SDK avec Visual Studio - nodejs n'a pas reconnu le module assemblé bson. noeud en tant que module. Après la réinstallation, le problème a disparu.

Encore une fois, que signifie cette erreur?

En fait, ce n'est même pas une erreur. Vous pouvez toujours utiliser la mangouste. Mais dans ce cas, au lieu de la réalisation native rapide du module bson, vous obtenez js-realisation, ce qui est plus lent. J'ai vu de nombreux conseils tels que: "modifier le chemin profondément dans node_modules ...", ce qui est totalement inutile car il ne résout pas le problème, il suffit de désactiver les messages d'erreur.

2
Alendorff

Si vous utilisez Windows 8.1, vous voudrez peut-être vous assurer que vous installez vos modules npm avec le compilateur Visual Studio approprié.

Visual Studio 2012 est installé sur mon ordinateur, cette commande marche pour moi . (Après avoir supprimé le répertoire node_modules)

npm install --msvs_version = 2012

Pour une raison quelconque, node-gyp tente d'utiliser la version incorrecte du compilateur Visual Studio. J'ai également remarqué que la commande "npm install" imprimait des avertissements concernant les dépendances non liées aux nœuds-gyp lors de l'installation des modules mongodb et mongoose.

Après avoir utilisé la version correcte msvs, les avertissements relatifs à l’installation de npm ont disparu ainsi que l’avertissement de la console lors de l’exécution de mon application nodejs.

Vous pouvez également vous assurer que vous disposez de la version correcte de Python 2.7.X et non de Python 3.0.X.

Vous devrez également vous assurer que python est dans votre chemin env.

2
Joseph Snow

Malheureusement, toutes les réponses ci-dessus ne sont qu'à moitié exactes. J'ai mis longtemps à comprendre cela.

Mongoose bson installer via npm émet un avertissement et provoque l'erreur ...

npm install -g node-gyp

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

Cela fonctionne comme par magie !!

2
Rama Prashanth

Vous ne devriez jamais modifier les fichiers du dossier de la bibliothèque NODE_MODULES.

Ces fichiers sont le résultat de la commande npm install.

En gros, je pense que pour les utilisateurs de Windows - le bon moyen est d’utiliser VM. C'est ce que je fais quand je travaille à la maison.

Tout ce dont tu as besoin:

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

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

et ensuite npm install ou, si vous l'avez déjà fait - npm update

1
Victor Perov

J'ai eu le même problème après la version de mise à niveau d'ubuntu à 16.04. J'ai résolu de cette façon, espérons que cela aide.

$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install
1
Enrico Giurin

Je réalise que ce fil a 1 an ou plus, mais cela m'a aidé, bien qu'avec un module différent.

J'ai installé mongoose-post-findv0.0.2 et ce problème a commencé. Pour résoudre ce problème, j'ai utilisé les suggestions et navigué vers\node_modules\mongoose-post-find\noeud_modules\bson\ext et ai ouvert le fichier index.js.

Le fichier commence par un bloc catch try essayant d'exiger la version correcte de 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('../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');
    }
}

c'est la version corrigée. Qu'est-ce qui se passait, c'est qu'il a essayé de charger bson à partir de ../build/Release/bson, n'a pas pu le trouver et est tombé dans la prise. Il a essayé de charger à nouveau bson à partir de ../build/Release/bson et a bien sûr échoué. Donc, je change le chemin dans la capture pour regarder dans ../browser_build/bson. Cela a résolu l'erreur.

Je poste ceci pour la complétude.

1
Paul Stoner

Essayez ces npm install bson et npm update

1
Raghav Manikandan

La meilleure solution pour moi était de passer de node-mongodb 1.x à 2.x.

1
jczaplew

Dans notre cas, la version b ++ de c ++ n'a pas été trouvée, c'est parce que nous étions derrière un proxy d'entreprise et que quelque chose dans le processus de compilation de BSON doit rechercher des fichiers. Lorsque nous avons examiné node_modules/bson/builderror.log, nous avons constaté une erreur comme celle-ci:

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)

Ce qui suggère que le proxy pourrait être la question. La définition des variables d’environnement http_proxy et https_proxy a résolu le problème.

Désolé de réveiller les commentaires à ce sujet, mais je voulais publier ce texte à l'intention de toute autre personne concernée par ce problème à l'avenir, car ce fil a été très utile pour résoudre notre problème. 

1
Matt M.

J'ai aussi ce problème.

Mais je change monmongodbversion en " ^ 2.2.33 " et n'ai plus le problème.

Vous devez installer npm rm votre ancien paquetage mongodb sur global ou local et installer cette version.

Si quelqu'un ne veut pas avoir d'effet secondaire sur le changement de nom de direction, essayez cette méthode.

0
S.J. Lin

Je travaille avec OS Windows 8.1 et j'ai eu le même problème. La source du problème était la version de Python. J'ai trouvé le problème d'origine examiner le fichier ...\node_modules\mongodb\node_modules\mongodb-core\node_modules\kerberos\builderror.log.

J'ai installé la version correcte de Python (2.7.9 pour 64 bits) et cela a résolu mon problème.

Remarque: la version installée de python doit être égale ou supérieure à 2.7.5 et inférieure à 3.0.0.

0
hbuenoc

Donc, j'ai le même problème et il se produit que l'URL spécifiée mongoDB n'existe pas. Donc, pour résoudre ce problème, vous devez aller dans le dossier "..\server\config\environment" et éditer dans le fichier "development.js" le lien vers mongoDB.

Exemple:

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

  seedDB: true
};

Modifiez donc "uri: 'mongodb: // localhost/test2-dev" "en un chemin réel vers votre base de données mongoDB.

Je serai heureux si mon message aidera quelqu'un ...

0
Vasilic Maxim

Premier copier le bson.js code de browser_build folder 

second créer un nouveau fichier bson.js et coller le code

third enregistrer le nouveau fichier près de dans index.js.

0
rktel

rechercher dans le module npm mongodb .. modules_noeud\mongodb\modules_noeud\bson\ext\index.js

et changer le chemin en version js dans le bloc catch

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

à 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

Npm essayé mongoose --msvs_version = 2012, si vous avez plusieurs Visual installés, cela a fonctionné pour moi

0
AKID Ahmed

J'ai essayé ceci dans la version 4.1.2 de mongo-sync 

mais ils ont fait des changements et cela ne fonctionne pas avec les solutions fournies ici 

la solution qui a fonctionné pour moi 

Path node_modules/mongo-sync/node_modules/bson/ext/index.js

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

Changer dans le bloc try (copier l'initialisation bson à partir du bloc catch)

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

Alors ça va ressembler

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

Tout d’abord, je viens de trouver dans le module npm mongodb le fichier index.js ..node_modules\mongodb\node_modules\bson\ext\index.js

et changer le chemin en version js dans le bloc catch

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

mais alors je viens de le changer comme ceci, tous les similaires ... précédemment installé le module ...: bson = require ('bson');

0
Felipe

Pour aujourd'hui (année 2017), nous avons ce module npm génial: https://github.com/felixrieseberg/windows-build-tools Qui résout généralement de nombreux problèmes liés à la construction d'éléments natifs pour Windows.

Essayez de résoudre le problème avec:

Remove node_modules npm install --global windows-build-tools npm install

0
Alendorff

J'ai essayé bson = require('../browser_build/bson'); mais je rencontre une autre erreur 

Impossible de définir la propriété 'BSON_BINARY_SUBTYPE_DEFAULT' sur non définie

Enfin, j'ai résolu ce problème simplement par npm update, cela corrigera le module bson dans Mangouste.

0
unclejimbo