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.
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'))\")"]
A exécuté cette commande npm install -g node-gyp
J'ai mis à jour la version de mangouste à 3.8.21 dans package.json
Rien ne fonctionne. Veuillez suggérer
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
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!
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.
J'ai résolu ce problème en installant la version 3.8.23
de mogoose
npm install [email protected]
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!
Installez la dernière version de mongodb.
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.
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.
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
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
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.
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:
- Créer le dossier "Release" à l'intérieur de "node_modules\bson\build \"
- Copiez le fichier bson.js à partir de "nœud_modules\bson\navigateur_gratuit \"
- 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.
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
node_modules\mongoose\node_modules\mongodb
dans mon dossier racine node_modules
(en écrasant toute version fournie avec npm install mongodb
)Failed to load c++ bson extension...
(ou changer le code pour qu'il soit muet sur le problème)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.
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.
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.
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.
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.
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 !!
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
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
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.
Essayez ces npm install bson
et npm update
La meilleure solution pour moi était de passer de node-mongodb 1.x à 2.x.
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.
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.
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.
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 ...
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
.
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');
}
}
Npm essayé mongoose --msvs_version = 2012, si vous avez plusieurs Visual installés, cela a fonctionné pour moi
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');
}
}
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');
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
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.