javascript - tutorial - node js angular 4
No se puede encontrar el código del módulo ''../build/Release/bson'']: ''MODULE_NOT_FOUND''} js-bson: no se pudo cargar la extensión c++ bson, utilizando la versión JS pura (30)
Respuesta corta
Instala la última versión de mongodb.
Un poco más de respuesta
Asegúrese de que su package.json esté utilizando la última versión de mongodb, luego elimine node_modules / mongodb y vuelva a instalar npm. Si no usó mongodb como dependencia directa, intente encontrar qué paquete está usando mongdb. Solía:
find . -type f -name package.json | xargs grep mongodb
...
./sails-mongo/package.json: "mongodb": "1.4.26",
...
Así que actualicé ./sails-mongo/package.json a:
"mongodb": "2.1.7",
Luego elimine node_modules / mongodb y vuelva a instalar npm. Parece bien ahora.
Respuesta aún más larga
No me gusta la forma actual sugerida de usar
require(''../browser_build/bson'')
Desde mirar ../browser_build/bson.js, un archivo de 4k + líneas, que también parece una implementación "no nativa". Por lo tanto, aunque no arrojará ninguna queja, todavía está "usando la versión JS pura", lo que significa un rendimiento más lento.
Mirando https://github.com/mongodb/js-bson/issues/145 y https://github.com/mongodb/js-bson/issues/165 , parece que el problema fue causado por:
antoniofruci comentó en sep 15, 2015
Me acabo de enterar de que el código de C ++ se ha eliminado hace 6 meses y ahora es una dependencia opcional: bson-ext. De hecho, si instala la última versión, no se produce ningún error.
Así que intenté eliminar todo el node_modules y aún obtuve el mismo error. Y mirando el paquete.json de node_modules / mongodb, su versión sigue siendo 1.4.26, no la última 2.1.7.
Aparentemente mi mongodb viene como una dependencia de otro paquete que instalé: sails-mongo. Modificando el package.json de sails-mongo y rehaciendo npm install finalmente resuelve el problema.
Recibo el siguiente error:
{ [Error: Cannot find module ''../build/Release/bson''] code: ''MODULE_NOT_FOUND'' }
js-bson: Failed to load c++ bson extension, using pure JS version
Aquí están los detalles de mi versión:
-
SO: Windows 7
-
MongoDB: 2.6.5
-
Nodo: 0.12.0
He intentado estas cosas antes de publicar el problema aquí.
-
Fui a la carpeta
/node-modules/mongoose/node-modules/mongodb/node-modules/bson
e hice el siguiente cambio en el archivo vinculante-gyp de''include_dirs'': [ ''<!(node -e "require(/'nan/')")'' ]
a''include_dirs'': ["<!(nodejs -p -e /"require(''path'').dirname(require.resolve(''nan''))/")"]
-
npm install -g node-gyp
este comandonpm install -g node-gyp
-
He actualizado la versión de mangosta a 3.8.21 dentro de
package.json
Nada funciona. Por favor recomiende
Al crear la configuración para
www.spotdekho.com
en la nueva máquina con
windows10
, no pude ejecutar el comando
"nodemon web.js"
debido al mismo error
"Error: no se puede encontrar el módulo ''../build/Release/bson''"
Lo solucionó con los siguientes pasos:
- Crear carpeta "Release" dentro de la ubicación "node_modules / bson / build /"
- Copie bson.js de "node_modules / bson / browser_build /"
- Pegue bson.js dentro de la carpeta "node_modules / bson / build / Release".
Esto resolverá el problema.
PD: estoy usando mangosta versión 4.8.8.
Gracias :), espero que ayude a alguien.
Al implementar Keystone JS CMS tuve el mismo error y creo que la solución más elegante es esta:
Instale
npm-check-updates
:
root@keystonejs:~# npm install -g npm-check-updates
Dentro de su directorio de sitio clave, donde se coloca
package.json
, verifique las dependencias:
debian@keystonejs:~/myproject/manalcjim$ npm-check-updates -u
Luego actualice todos los paquetes:
debian@keystonejs:~/myproject/manalcjim$ npm install
Y finalmente, si elige
jade
para las plantillas, tal vez necesite instalar el módulo de
jade
explícitamente:
debian@keystonejs:~/myproject/manalcjim$ npm install jade --save
Cuando recibía errores como este, estaba actualizando del nodo v0.10 al nodo v4.xx. Lo que tuve que hacer fue instalar una versión más nueva de gcc (creo que tenía gcc v4.4.xo algo así). Actualicé a gcc 4.7.2 y las cosas funcionaron después de eso.
Desafortunadamente, todas las respuestas anteriores son solo la mitad correctas. Tomó mucho tiempo resolver esto ...
Mongoose bson instalar a través de npm lanza advertencia y provoca el error ...
npm install -g node-gyp
git clone https://github.com/mongodb/js-bson.git
cd js-bson
npm install
node-gyp rebuild
¡Esto funciona como magia!
Ejecute este comando para desinstalar mongoose
npm uninstall --save mongoose
- luego
npm uninstall --save mongoose
instalarlo, pero esta vez
npm
instala automáticamente la última versión de mongoose run
npm install --save mongoose
Esto funcionó para mí.
El problema es que cuando instalas mangosta a través de npm, se supone que tienes Python instalado en tus ventanas e intenta construir las bibliotecas necesarias. Como no tiene Python, omite la fase de construcción con una advertencia. Pero cuando inicia su aplicación, los módulos necesarios no están allí, por lo que obtiene este error.
Para hacer las cosas bien, primero instale Python (versión 2.7) en su computadora desde:
https://www.python.org/downloads/
o si ha instalado chockolatey simplemente escriba
choco install python2
.
Luego, asegúrese de que su variable python esté configurada. Puede configurarlo en el símbolo del sistema como:
SET python=D:/Python27/python.exe
(Por supuesto, debe cambiar la ruta de acuerdo con su ubicación de python) Luego instale node-gyp:
npm install -g node-gyp
Ahora puede reinstalar mangosta o cualquier módulo que cause el problema:
npm install mongoose
Verá algunas líneas amarillas en lugar de las rojas esta vez, pero el error desaparecerá.
En mi caso, los bits que vienen con mangosta (
npm install mongoose
) tienen una versión funcional del paquete
mongodb
en su carpeta
node_modules
.
Los siguientes pasos me ahorraron el trabajo de solucionar el problema:
-
npm install mongoose
-
Copiar
node_modules/mongoose/node_modules/mongodb
a mi carpeta raíznode_modules
(sobrescribiendo cualquier versión quenpm install mongodb
connpm install mongodb
) -
ignore el
Failed to load c++ bson extension...
(o cambie el código para silenciar el problema)
En nuestro caso, la razón por la que no se encontró la versión c ++ bson fue porque estábamos detrás de un proxy corporativo y algo en el proceso de compilación de BSON necesita comunicarse para buscar archivos. Cuando buscamos en node_modules / bson / builderror.log, vimos un error como este:
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)
Lo que sugirió que el proxy podría ser el problema. La configuración de las variables de entorno http_proxy y https_proxy lo resolvió.
Perdón por volver a despertar comentarios sobre esto, pero quería publicar esto para cualquier otra persona que llegue a esto en el futuro ya que este hilo fue muy útil para resolver nuestro problema.
Encuentra en el módulo npm mongodb:
.. / node_modules / mongodb / node_modules / bson / ext / index.js
Cambiar la ruta a la versión js en el bloque catch:
bson = require(''../build/Release/bson'');
A:
bson = require(''../browser_build/bson'');
O copie el archivo en:
.. / node_modules / bson / build / Release / bson
De:
.. / node_modules / bson / browser_build / bson
Entonces, tengo el mismo problema y sucede que la URL de mongoDB especificada no existe. Entonces, para solucionar esto, debe ir a la carpeta ".. / server / config / environment" y editar en el archivo "development.js" el enlace a mongoDB.
Ejemplo:
// Development specific configuration
// ==================================
module.exports = {
// MongoDB connection options
mongo: {
uri: ''mongodb://localhost/test2-dev''
},
seedDB: true
};
Entonces, cambie este "uri: ''mongodb: // localhost / test2-dev''" por alguna ruta real a su base de datos mongoDB.
Me alegrará si mi publicación ayudará a alguien ...
Esto funcionó para mí. Busque en su espacio de trabajo el texto:
"../build/Release/bson"
Probablemente lo encontrará dentro de los módulos mongose y monk.
Luego reemplace cada uno:
bson = require(''../build/Release/bson'');
con:
bson = require(''bson'');
¡eso es todo!
Esto funcionó para mí:
Vaya al archivo (en su proyecto):
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
y cambio:
bson = require(''../build/Release/bson'');
a:
bson = require(''bson'');
Referencia: https://github.com/mongodb/js-bson/issues/118
Estoy trabajando con el sistema operativo Windows 8.1 y tuve el mismo problema. La fuente del problema fue la versión de Python. Encontré que el problema de origen revisa el archivo ... / node_modules / mongodb / node_modules / mongodb-core / node_modules / kerberos / builderror.log.
Instalé la versión correcta de Python (2.7.9 para 64 bits) y resolvió mi problema.
Nota: La versión instalada de python debe ser igual o mayor que 2.7.5 y menor que 3.0.0
He intentado
bson = require(''../browser_build/bson'');
pero terminas encontrando otro error
No se puede establecer la propiedad ''BSON_BINARY_SUBTYPE_DEFAULT'' de undefined
Finalmente solucioné este problema simplemente mediante la
npm update
, esto solucionará el módulo bson en mangosta.
Intenté npm install mongoose --msvs_version = 2012, si tienes múltiples Visual instalados, funcionó para mí
La mejor solución para mí fue actualizar de node-mongodb 1.xa 2.x.
La respuesta marcada es completamente incorrecta. Todo lo que hace es ocultar la declaración de registro de la consola y no hace nada para resolver el problema. También puede cerrar los ojos y obtendrá el mismo resultado.
El problema es causado por node-gyp y solo eso. Su propósito es compilar extensiones nativas para ciertos módulos como bson.
Si no lo hace, entonces el código recurrirá a la versión JS y le informará amablemente a través del mensaje informativo:
Failed to load c++ bson extension, using pure JS version
Supongo que la pregunta es realmente sobre cómo compilar la extensión nativa de C ++ en lugar de simplemente no ver el mensaje, así que abordemos eso.
Para que node-gyp funcione, su node-gyp debe estar actualizado con su nodo y compilador de C ++ (que diferirá según su sistema operativo). Tan importante como su módulo también debe estar actualizado.
Primero desinstale y reinstale node-gyp
npm un node-gyp -g;npm i node-gyp -g
Ahora necesitará desinstalar y reinstalar completamente cualquier módulo de nodo en su aplicación (que incluya también módulos instalados por requisitos) que tengan bson. Eso debería encargarse del error. Puede buscar ''Release / bson'' y encontrar a los culpables.
find node_modules/ -type ''f'' -exec grep -H ''Release/bson'' {} /;
Y luego desinstale y reinstale estos módulos.
Más fácil es rehacer toda la carpeta
node_modules
:
rm -rf node_modules
npm cache clear
npm i
Si aún experimenta problemas, entonces 1) su módulo está desactualizado - verifique el rastreador de problemas en su repositorio o 2) tiene un conflicto potencial - a veces podemos tener un nodo-gyp local, por ejemplo.
Puede ejecutar
node-gyp
por sí mismo y verificar las versiones.
Lo único que me ayuda en Windows 7 (x64): https://.com/a/29714359/2670121
Vuelva a instalar el nodo y Python con versiones x32.
Pasé mucho tiempo con este error (Error al cargar la extensión c ++ bson) y finalmente, cuando instalé el módulo
node-gyp
(para compilar complementos nativos) e incluso instalé Windows SDK con Visual Studio - nodejs no reconoció el módulo ensamblado bson.node como módulo
Después de reinstalar el problema se ha ido.
De nuevo, ¿qué significa este error?
En realidad, ni siquiera es un error. Todavía puedes usar mangosta. Pero en este caso, en lugar de la rápida realización nativa del módulo bson, obtienes js-realization, que es más lento. Vi muchos consejos como: "editar ruta en el interior de node_modules ...", que es totalmente inútil porque no resuelve el problema sino que apaga los mensajes de error.
Me doy cuenta de que este hilo tiene más de 1 año, pero me ayudó, aunque con un módulo diferente.
Instalé mongoose-post-findv0.0.2 y comenzó este problema. Para solucionarlo, utilicé las sugerencias y navegué a / node_modules / mongoose-post-find / node_modules / bson / ext y abrí el archivo index.js.
El archivo comienza con un bloque try try que requiere la versión correcta 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'');
}
}
Esta es la versión corregida. Lo que estaba sucediendo es que intentó cargar bson desde ../build/Release/bson, no pudo encontrarlo y cayó en la trampa. Se intentó cargar bson nuevamente desde ../build/Release/bson y, por supuesto, falló. Así que cambio la ruta en la captura para buscar en ../browser_build/bson. Esto resolvió el error.
Publico esto para completar.
Nunca debe cambiar los archivos en la carpeta de la biblioteca NODE_MODULES.
Esos archivos son el resultado del comando
npm install
.
Básicamente, creo que para los usuarios de Windows: la forma correcta es usar VM. Es lo que hago cuando trabajo desde casa.
Todo lo que necesita:
for CentOS: yum install gcc gcc-c++ make openssl-devel
for Debian/Ubuntu: apt-get install build-essential
y luego
npm install
o, si ya lo ha hecho,
npm update
Pruebe
npm install [email protected]
y también reemplace
bson = require(''../build/Release/bson'');
a
bson = require(''../browser_build/bson'');
en node_modules / bson / ext / index.js
Pruebe esta
npm install bson
y
npm update
Resolví este problema instalando mogoose versión
3.8.23
npm install [email protected]
Si está utilizando Windows 8.1, es posible que desee asegurarse de que está instalando sus módulos npm con el compilador visual studio correcto.
Tengo instalado Visual Studio 2012, este comando funciona para mí. (después de eliminar node_modules dir)
npm install --msvs_version = 2012
Por alguna razón, node-gyp está intentando usar la versión incorrecta del compilador de Visual Studio. También noté que el comando "npm install" estaba imprimiendo advertencias sobre las dependencias de no-gyp al instalar los módulos mongodb y mongoose.
Después de usar la versión correcta de msvs, las advertencias de instalación de npm desaparecieron, así como la advertencia de la consola al ejecutar mi aplicación nodejs.
También puede asegurarse de tener instalada la versión correcta de Python 2.7.X y no Python 3.0.X.
También deberá asegurarse de que Python esté en su ruta de env.
También tuve el mismo problema con bson.
probando una nueva versión de mangosta
npm install [email protected]
resuelto el problema.
Massimo
Tuve el mismo problema después de la versión de actualización de ubuntu a 16.04. Resolví de esta manera, espero que ayude.
$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install
Tuve este problema hoy (19 de febrero de 2016) y lo resolví simplemente instalando la última versión de Mongoose. Intenta poner esto en tu paquete.json:
"mongoose": "~4.4"
Espero que ayude. ¡Lo resolvió por mí!
encontrar en el módulo npm mongodb ..node_modules / mongodb / node_modules / bson / ext / index.js
y cambiar la ruta a la versión js en el bloque catch
bson = require(''../build/Release/bson'');
a
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'');
}
}
Primero
copie el código
browser_build folder
segundo
crea un nuevo archivo
bson.js
y pega el código
tercero,
guarde el nuevo archivo cerca de
index.js
.