Mongoose: js-bson: no se pudo cargar la extensión c ++ bson, usando la versión JS pura

Creado en 7 sept. 2014  ·  115Comentarios  ·  Fuente: Automattic/mongoose

Hice clic en Fork , cloné el repositorio y adjunté este módulo a mi proyecto. Me sale este error

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

nodejs v0.11.13 , último osx . Parece que el problema está en el módulo mongodb (funciona con bson 0.2.15).

Comentario más útil

Cuando lo uso con Keystone, esto es lo que funcionó para superar ese error:

agregue lo siguiente a mis package.json deps:

"mongoose": "~4.4.16",
"mongodb": "~2.1.18",
"keystone": "^0.3.19",

luego

npm install

finalmente

rm -rf node_modules/keystone/node_modules/mongodb
rm -rf node_modules/keystone/node_modules/mongoose

Ahora no recibo el error.

Todos 115 comentarios

El mismo problema

El mismo problema aquí; retroceder a 3.8.15 resuelve el problema en OSX bajo 0.11.13.

Sí, yo también me di cuenta de esto. Su código seguirá funcionando, solo que puede tener un peor rendimiento. Arreglaré esto para la próxima versión.

OK

El mismo problema

Aquí igual. Permanecerá 3.8.15 hasta cambios.

Ok ... ¡El mismo problema!

¿Algún avance en esto?

Tuve el mismo problema (mangosta 3.8.19 y nodo 0.10.33). Acabo de resolverlo después de notar que npm install (y npm update) compilan la versión Debug de bson pero index.js (colocada en node_modules / mongoose / node_modules / mongodb / node_modules / bson / ext / index.js en mi caso) requieren la versión de lanzamiento. Como puede ver en esta sección del código:

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.error("js-bson: Failed to load c++ bson extension, using pure JS version");
        bson = require('../lib/bson/bson');
    }
}

Entré al directorio de compilación y simplemente compilé bson con el siguiente comando

make BUILDTYPE=Release all

En algún lugar del repositorio se ha cambiado de Release a Debug, pero no lo busqué.

@ Gas3 ¿qué versión de npm estás usando y en qué plataforma lo estás ejecutando? Esto realmente no debería estar sucediendo en el nodo estable 0.10.x.

Además, me las arreglé para reproducir esto: parece un npm install limpio con npm 2.0.0 (la versión que viene con el nodo 0.11.14) y el nodo 0.11.14 hace que esto funcione bien. Es decir, rm -rf node_modules && npm install . ¿Pueden comprobar si esto ayuda?

sobre el nivel del mar 2.1.7 en Os X 10.9.5

¿Puede probar una instalación limpia de npm - elimine node_modules y luego npm install ? Esto realmente suena como un problema de cambiar versiones de nodo sin reconstruir js-bson.

+1

@brunobatista prueba rm -rf en tus node_modules y haz una instalación limpia de npm.

El mismo problema:
versión del nodo: v0.10.35
versión npm: 2.1.18

El mismo problema aqui:
SO: Arch Linux
Versión de nodo: v0.10.35
versión npm: 2.1.18
Versión de mangosta: 3.8.21

Intenté 'rm -rf node_modules; npm cache clean; npm install 'sin suerte.
Probé también con Mongoose versión 3.8.15 con los mismos resultados.

El mismo problema estaba en Ubuntu 14.04. Mis pasos:
1) npm actualizado a 2.1.18 desde 1.3
2) limpieza de caché npm
3) rm -rf módulos_nodo
4) npm i
¡Funciona!

Pero veo un error en Windows 8.1. Este "requerir" arroja un error:

bson = require('./win32/ia32/bson'); 
The specified procedure could not be found.
C:\Users\d.kiriliuk\Projects\vozovoz\node_modules\mongoose\node_modules\mongodb\node_modules\bson\ext\win32\ia32\bson.node

El archivo bson.node existe

¿Planes para arreglar esto?

El mismo problema

SO: OSX 10.10.2
Versión de nodo: v0.10.36
versión npm: 2.3.0
Versión de mangosta: 3.8.22

Intenté 'rm -rf node_modules; npm cache clean; npm install 'sin suerte.

Cuando requiero mangosta, obtengo este resultado:

[Error: Module did not self-register.]
js-bson: Failed to load c++ bson extension, using pure JS version

+1

¡¡El mismo problema!!

SO: UBUNTU 14.04 (x64)
versión del nodo: 0.12.0
versión npm: 2.5.1
versión mangosta: 3.8.21

[Error: node_modules/mongoose/node_modules/mongodb/node_modules/bson/build/Release/bson.node: undefined symbol: node_module_register]

(err): js-bson: Failed to load c++ bson extension, using pure JS version

¿Alguna solución alternativa o planes para solucionarlo?

No encontré nada :(
Intento reinstalar mis paquetes ...
reconstruir bson con node-gyp
limpiar caché npm y ...
no pasó nada.
todavía tengo este mensaje

Actualizo mi paquete de mangosta a 3.9.7
el problema se solucionó pero recibí este mensaje de mongoose:

##############################################################
#
#   !!! MONGOOSE WARNING !!!
#
#   This is an UNSTABLE release of Mongoose.
#   Unstable releases are available for preview/testing only.
#   DO NOT run this in production.
#
##############################################################

¡REPARADO!
Utilizo la última versión estable de mongoose (3.8.23)
el problema solucionado :)

"Arreglar" esto en general no es realmente posible, porque este mensaje de error puede significar una de muchas cosas. Puede significar que no tiene una versión adecuada de python o un compilador C ++ adecuado instalado (debido a node-gyp), puede significar que cambió las versiones del nodo desde que npm instaló mongoose, etc.

¡Tú ganas!

Disculpe, fue mi culpa.

builderror.log:
gyp ERR! configurar error
gyp ERR! Error de pila: el ejecutable de Python "python" es v3.4.2, que no es compatible con gyp.
gyp ERR! stack Puede pasar el conmutador --python para que apunte a Python> = v2.5.0 & <3.0.0.
gyp ERR! apilar en failPythonVersion (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:108:14)
gyp ERR! apilar en /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:97:9
gyp ERR! pila en ChildProcess.exithandler (child_process.js: 735: 7)
gyp ERR! pila en ChildProcess.emit (events.js: 110: 17)
gyp ERR! apilar en maybeClose (child_process.js: 1008: 16)
gyp ERR! apilar en el zócalo.(child_process.js: 1176: 11)
gyp ERR! pila en Socket.emit (events.js: 107: 17)
gyp ERR! apilar en Pipe.close (net.js: 476: 12)
gyp ERR! Sistema Linux 3.14.27-1-lts
gyp ERR! comando "nodo" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "reconstruir"
gyp ERR! cwd / home / node / sites / hellooo / src / node_modules / mongoose / node_modules / mongodb / node_modules / bson
gyp ERR! nodo -v v0.12.0
gyp ERR! node-gyp -v v1.0.2
gyp ERR! no está bien

En mi caso la solución fue:

npm config set python python2.7

Reinstale mangosta y funcionando.

No presté atención a estas líneas de la salida de 'npm install':

[email protected] install / home / node / sites / hellooo / src / node_modules / mongoose / node_modules / mongodb / node_modules / bson
(reconstrucción de node-gyp 2> builderror.log) || (salida 0)

Esto significa que hubo un error al compilar bson que no había notado.

Muchas gracias @ vkarpov15.

Sí, me olvido de decir que actualicé mi configuración npm python.

tnx @ vkarpov15

Hola,
He ejecutado "rm -rf node_modules && npm install" y veo a continuación.

/

[email protected] instalar c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modu
lesmongodb \ node_modules \ kerberos
(reconstrucción de node-gyp 2> builderror.log) || (salida 0)

c: \ Raj \ proyecto \ meandemo \ node_modules \ mongoose \ node_modulesmongodb \ node_modules \
kerberos> nodo "c: \ Archivos de programa \ nodejs \ node_modulesnpmbin \ node-gyp-bin .... \
node_modules \ node-gypbin \ node-gyp.js "reconstruir

[email protected] instalar c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modules
mongodb \ node_modulesbson
(reconstrucción de node-gyp 2> builderror.log) || (salida 0)

Cuando ejecuto mi servidor, aparece el siguiente error.

{[Error: No se puede encontrar el módulo '../build/Release/bson'] código: 'MODULE_NOT_FOUND'}

js-bson: no se pudo cargar la extensión c ++ bson, usando la versión JS pura
c: \ Raj \ proyecto \ meandemo \ node_modules \ express \ lib \ router \ route.js: 170
lanzar un nuevo error (msg);
^
Error: Route.get () requiere funciones de devolución de llamada pero obtuvo un [objeto indefinido]
en la ruta.(c: \ Raj \ proyecto \ meandemo \ node_modules \ express \ lib \ route
r \ route.js: 170: 15)
en Array.forEach (nativo)
en la ruta. (función anónima) como obtener
en EventEmitter.app. (función anónima) (c: \ Raj \ project \ meandemo \ node_modul
es \ express \ lib \ application.js: 429: 19)
en Object.(c: \ Raj \ proyecto \ meandemo \ server.js: 23: 5)
en Module._compile (module.js: 460: 26)
en Object.Module._extensions..js (module.js: 478: 10)
en Module.load (module.js: 355: 32)
en Function.Module._load (module.js: 310: 12)
en Function.Module.runMain (module.js: 501: 10)

Aquí están los detalles de mi versión:
SO: Windows 7
nodo: 0.12.0
mangosta: 3.8.23
npm: 2.5.1

Por favor recomiende

Hola @rajnav , Echa un vistazo a builderror.log, puede mostrarte el origen del problema.

El mismo problema pero builerror.log contiene solo una línea:

child_process: customFds option is deprecated, use stdio instead.

en proyecto / node_modules / mongoose / node_modules / mongodb / node_modules / bson

Estoy usando osx yosemite y el nodo 0.12.x

También recibí esta advertencia, pero funcionó para mí.

Estoy usando Fedora 20 con el nodo 0.12.xy recibí esta advertencia. ¿Es seguro seguir trabajando con él?
No tuve problemas con el nodo 0.10.x

Parece una advertencia de desaprobación, pero no estoy seguro de las secuelas. Como dije anteriormente, me está funcionando bien.

@rajnav, el error parece estar en Express. El error bson no encontrado es una advertencia de que no pudo encontrar el binario bson compilado nativo, no debería estar causando un bloqueo.

Además, he visto la advertencia de desactivación de la opción customFds. Todavía debería funcionar. Investigaré más sobre de dónde viene eso.

Los archivos builderror.log proporcionan una respuesta.
Pasé un indicador --python=python2.7 con npm install, tal como se pidió, y no más errores. Ha funcionado tanto en instalaciones de Windows 64bit como de Ubuntu.

npm install --python=[path to python] mongoose

PD
En la máquina de Windows, todavía tengo
child_process: customFds option is deprecated, use stdio instead.
en el archivo builderror.log, pero esto no provoca que aparezcan errores en la consola del nodo cuando se ejecuta la aplicación.

mangosta: 3.8.24
npm: 2.7.9
sistema operativo: Arch Linux

haciendo
rm -rm node_modules/
npm cache clean
npm config set python python2.7
npm install
trabajó para mi.

haz una limpieza npm install
me pasó después de actualizar node.

Mangosta 3.8.21
Ubuntu 14.04.2

Utilizando

npm config set python python2.7
cd node_modules/mongoose/node_modules/mongodb/node_modules/bson
npm install

¡trabajó para mi!

Entonces, ¿Python es un requisito para usar mangosta? No está claro en los documentos, por lo que no puedo instalarlo en el entorno de producción. (A menos que esté documentado ...) :(

Mongoose solo requiere Python ya que node-gyp (contenedor de nodos alrededor del sistema de compilación v8) requiere Python . Python no es una dependencia en tiempo de ejecución para mangosta. Si necesita documentación de que mongoose necesita python para construir el analizador bson de C ++, haga clic aquí .

Sin embargo, una vez más, la mangosta funcionará como se esperaba incluso si no puede construir el analizador bson. La única característica que requiere node-gyp para tener éxito es el mecanismo de autenticación kerberos.

Muchísimas gracias,

@jayflo eso es un trabajo para mí también, ¡¡ahora no quiero más problemas por eso !!

+1 aquí mongodb / js-bson / issues / 118

Esto solucionará tus problemas:

$ cd node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/
$ npm install

Así que fue bastante obvio para mí que quienquiera que integre mongodb-core en mongodb en mangosta es el culpable. Alguien se perdió una instalación de npm allí. ¿Hay alguna manera de escalar esto, ya que claramente miles de usuarios se ven afectados y el impacto (comercial) se puede considerar con seguridad como muy alto, al menos en mi opinión, pero me he equivocado antes?

Nadie se perdió una instalación de npm, funciona bien si su sistema está configurado para ejecutar node-gyp correctamente. Dicho esto, configurar su sistema para ejecutar node-gyp correctamente es un gran problema en los cuartos traseros, por lo que estamos considerando la construcción previa de binarios y hacer que npm install intente descargar primero un binario prediseñado a menos que opte por no participar.

En cuanto al impacto empresarial, una vez más, esta es una _ advertencia_, no un _error_.

Gracias por tu aclaratoria respuesta. grunt y node no se iniciarán si no instalo npm en el directorio mongo-core, por lo que esta advertencia es un obstáculo al menos en mi escenario y, obviamente (desplazarse hacia arriba) en muchos otros. Puedo ver que, desde su perspectiva, esto no es asunto de sus proyectos, sin embargo, no se ejecuta de inmediato en Linux, Mac y Windows por igual.

Am 17.04.2015 um 15:33 schrieb Valeri Karpov [email protected] :

rning, no un error.

si no comienzan, entonces algo más está mal. Este mensaje es una advertencia y no evitará que inicies gruñido o nodo. ¿Puede mostrarme el resto del resultado de su comando npm install original (antes de ejecutar npm install en mongodb-core)?

Una vez más, si desea deshacerse de esta advertencia ahora, la única forma en este momento es configurar las dependencias de node-gyp .

gracias vkarpov15 por pegarlo en este hilo. Solo quiero lanzar un +1 propio para que sepas que hay otro con el mismo problema. Dicho esto, todavía puedo ejecutar mi aplicación, por lo que seguiré su consejo de que esto no es un error, sino una advertencia. Por lo tanto, esperamos que la advertencia se resuelva en una actualización futura para esa tranquilidad adicional. gracias de nuevo.

fyi ~ esta advertencia apareció después de actualizar el nodo de 10 a 12 ...

@camachowebworld intenta limpiar tus node_modules y reinstalar rm -rf node_modules && npm install . Normalmente, cuando realiza una actualización importante de la versión de un nodo, debe reconstruir las extensiones nativas, incluido bson. La reinstalación debería funcionar.

Ubuntu 14.04.1 LTS (AWS EC2)
Tuve que ejecutar "sudo apt-get install build-essential"

Quizás pueda ayudar a alguien.

vkarpov15 gracias por responder a msg. sry por la falta de experiencia. estás diciendo "intenta limpiar tus node_modules y reinstalar rm -rf node_modules && npm install". estoy en windows. ¿Dónde ejecuto estos comandos? Intento ejecutar "rm -rf node_modules" en la carpeta de mi proyecto y me dice "rm no es .... comando".

Simplemente elimine node_modules en el explorador de Windows, lo mismo. Luego, ejecute npm install donde lo haya ejecutado originalmente.

Sugerencia general, use git bash + mingw si está haciendo un desarrollo de nodos en Windows

Obtuve el mismo error justo después de actualizar el nodo a la versión 0.12.3 en Windows 7 (x64).
Ya instalé: node-gyp, node-pre-gyp, python, .NET SDK -> después de eso, ya no recibo mensajes de error sobre el ensamblaje. Y para la carpeta de mangosta 3.8.28 mongoose\node_modules\mongodb\node_modules\bson\build\Release
contiene estos archivos:

/obj
/bson.exp
/bson.lib
/bson.node
/bson.pdb

Pero mensaje

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

todavía aparece

UPD : Encontré una solución para mí.

Para usuarios de iojs:

Las últimas versiones no son compatibles con la mangosta. Cambie a la última versión estable v2.0.0 (use nvm por el amor de Dios). ¡Y funcionará de maravilla!

Añadiendo esta información por si acaso, aquí en nuestra empresa tuvimos este problema recientemente.

En Windows, resolví este problema cambiando una línea en:

node_modulesmongodb \ node_modulesmongodb-core \ node_modulesbson \ node_modulesbons-ext \ ext \ index.js

la línea después de:

// Intente cargar la versión de lanzamiento bson
tratar {

from: bson = require ('../ build / Release / bson');
to: bson = require ('../../../ lib / bson / bson');

El mensaje de error:
{[Error: No se puede encontrar el módulo '../build/Release/bson'] código: 'MODULE_NOT_FOUND'}
js-bson: no se pudo cargar la extensión c ++ bson, usando la versión JS pura

ahora se ha ido y Mongo parece funcionar bien. Usando el controlador mongodb ver. 2.0.33

Espero eso ayude.

¿Alguien puede confirmar que la solución de ChrisGciso es viable? Ahora nos enfrentamos a este problema del mismo año con Atlassian Bamboo. ¿Alguna idea de cómo arreglarlo con Bamboo?

No es una solución, solo un truco. De la misma manera, puede eliminar las salidas de la consola en ese archivo.

Estoy luchando por entender que la alternativa a JS Bson y la advertencia de que no es tan eficaz como la implementación de C ++ es solo una cuestión cosmética.

Stephan Kristyn
Edelweißstr. 4
81541 Múnich

+49151 5461 8086
s. [email protected]
http://meshfields.de

El 9 de junio de 2015 a las 17:38 +0200, [email protected] , escribió:

No es una solución, solo un truco. De la misma manera, puede eliminar las salidas de la consola en ese archivo.

-
Responda a este correo electrónico directamente o véalo en GitHub (https://github.com/Automattic/mongoose/issues/2285#issuecomment-110406406).

@ChrisGciso, eso es solo barrer la advertencia debajo de la alfombra. Eso significa que usará el analizador bson de JavaScript sin verificar el compilado.

@nottinhill Lamentablemente, no tengo experiencia con el bambú, así que no puedo ayudar. Si se trata de un 'problema cosmético' depende de su caso de uso; por ejemplo, en un entorno de CI como el bambú, generalmente se preocupa demasiado por recortar un microsegundo aquí y ahorrar un par de bytes de memoria allí. En su entorno de producción es donde potencialmente importa, y si realmente necesita un poco más de rendimiento, lo que debe hacer es configurar las dependencias de nodo-gyp y reinstalar.

Tal como está, una de las cosas que esperamos hacer en el futuro es cerrar la brecha entre el analizador bson compilado y el analizador bson de JavaScript. Si quieres contribuir, eres más que bienvenido en http://github.com/mongodb/js-bson :)

@ vkarpov15 Barrer los mensajes de "Error" debajo de la alfombra si no tienen una resolución simple y no causan ningún impacto material en el rendimiento puede ser mejor que mezclarlos con errores reales que reflejan problemas reales. Ver este error una y otra vez durante meses no es bueno a menos que se pueda manejar, especialmente para las personas nuevas que desean usar el controlador. ¿Existe una solución mejor que no implique una serie compleja de pasos para simplemente deshacerse del mensaje de error?

¿Quizás debería etiquetarse como "Información" en lugar de "Error"?

Un buen punto. Existe la bandera native_parser que debería evitar que mongodb busque la versión compilada de js-bson.

Estoy en Fedora 22, nodo v0.12.4, instalado esta noche

npm config set python python2.7
=> resuelto mis problemas, gracias

Tenía este problema aquí en un contenedor Archlinux de Docker, y mi solución fue:

$ pacman -S gcc make nodejs npm python2
$ npm config set python python2.7
$ npm install -g node-gyp

Mangosta versión 4.0.5

Con respecto al error de Bamboo , _resolví_ el problema creando una tarea npm y configurando su variable de entorno como de costumbre, luego los siguientes parámetros:

install node-gyp

Verá quejas sobre la marca global que falta, pero en Bamboo al menos no preferimos las instalaciones globales debido a la flexibilidad de la migración.

El error de

build   17-Jun-2015 10:30:53    Running "mochaTest:src" (mochaTest) task
build   17-Jun-2015 10:30:53    { [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
error   17-Jun-2015 10:30:53    js-bson: Failed to load c++ bson extension, using pure JS version

Sí, funcionó para mí, gracias.

En realidad, tuve que instalar demasiado gcc y make también, para que pudiera compilar el cpp en un binario.

-
Frederico Souza
Cofundador de RioBus - http://riob.us/ http://riob.us/
Teléfono: (+55 21) 97285-8787
Rio de Janeiro, Brasil

Em 17/06/2015, à (s) 05:22, Stephan Kristyn [email protected] escreveu:

Con respecto al error de Bamboo: resolví el problema creando una tarea npm y configurando su variable de entorno como de costumbre, luego los siguientes parámetros:

instalar node-gyp
Verá quejas sobre la marca global que falta, pero en Bamboo al menos no preferimos las instalaciones globales debido a la flexibilidad de la migración.

-
Responda a este correo electrónico directamente o véalo en GitHub https://github.com/Automattic/mongoose/issues/2285#issuecomment -112714644.

Tuve este problema. Se actualizó connect-mongo a 0.8.2 y mongoose a la versión 4.0.7, y funcionó bien.

Nodo v0.12.2, NPM 2.13.0, OSX 10.10.4

Mismo problema con sailsjs

Actualice a mangosta> = 4.0.6 para que bson ya no use extensiones C ++. De cualquier manera, este mensaje es solo una advertencia.

La actualización a 4.0.6 funcionó para mí, gracias vkarpov15.

El mismo problema. use xUbuntu 15.04.
Intenté instalar el paquete de libkrb5-dev, nodejs-legacy. y actualice Node.js v4.1.0, npm 2.14.3, mongoose 4.1.7. pero no funciona :-(

¿Ha intentado una reinstalación limpia? Además, no se preocupe por libkrb a menos que le importe la autenticación de kerberos, mongoose funcionará bien sin él.

@TimePower ¿

Recibo el siguiente error al intentar usar cualquier cosa relacionada con Mongoose:

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

Nodo 4.1.0 y Mongoose 4.1.10.

rm -rf node_modules && npm cache clean && npm install @jackdbernier

También es una advertencia, no un error.

Actualice a mangosta> = 4.0.6 para que bson ya no use extensiones C ++.

Estoy usando Mongoose 4.1.10 y sigo recibiendo el error.

Resolví la degradación de mongodb a 2.6

rm -rf node_modules && npm cache clean && npm install
no funciona para mí, después del mismo error

Mismo problema aquí:

rm -rf node_modules && npm cache clean && npm install
no funciona para mí, después del mismo error

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

Mi configuración:

  • Máquina de AWS Ubuntu: Ubuntu 14.04.1 LTS
  • node.js v0.12.7
  • Mangosta 4.1.12
  • MongoDB 2.6.5

Todo esto comenzó cuando actualicé nodejs, la actualización a Mongoose 4.1.12 tampoco ayudó.

¿Cómo es esto todavía un problema ??? Debería molestarme en dejar más información aquí ... todos los demás han hecho eso por mí ... ¿Alguien va a estabilizar esto o qué ???

No es un error, solo una advertencia. También hay suficiente información en este hilo sobre cómo configurar node-gyp correctamente.

@ vkarpov15 Gracias por la respuesta. Esto es un error, no una advertencia: la instalación de npm falla después de este mensaje. ¿Puede decirme más sobre cómo se relaciona esto con node-gyp.

npm install no muestra este mensaje, así que lo dudo mucho.

Dudo que se relacione con node-gyp de alguna manera. Estoy en OS X 10.11, he estado usando _muchas_ dependencias nativas como node-sass, incluso antes de que lanzaran binarios para las nuevas versiones de Node.js y se compilaran correctamente. Entonces mi configuración está bien. Y todavía:

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

Instalé todas las dependencias directamente desde Node.js 4.

@ vkarpov15 tienes razón, mi error. El error ocurrió al intentar requerir el módulo en el nodo, luego de actualizar con npm. Intenté que funcionara durante varias horas, pero ninguno de los consejos dados en línea pareció ayudar, así que bajé de categoría nuevamente y no lo he vuelto a mirar desde entonces.

Acabo de resolver eso.

Cuando instala el módulo mongoose por npm, no tiene un módulo bson integrado en su carpeta. En el archivo node_modules / mongoose / node_modules / mongodb / node_modules / bson / ext / index.js, cambie la línea

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

bson = require ('bson');

El mismo problema en FreeBSD.

¿Cómo podemos construir la extensión BSON de C ++?


Esto es lo que dijo npm install :

> [email protected] install /usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

gmake: Entering directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos/build'
  SOLINK_MODULE(target) Release/obj.target/kerberos.node
  COPY Release/kerberos.node
gmake: Leaving directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos/build'

> [email protected] install /usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

gmake: Entering directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson/build'
  CXX(target) Release/obj.target/bson/ext/bson.o
bson.target.mk:88: recipe for target 'Release/obj.target/bson/ext/bson.o' failed
gmake: Leaving directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson/build'
[email protected] node_modules/crypto

[email protected] node_modules/bson

el mismo problema aqui

@ vkarpov15 Confirmo lo que dice @mgol . Hay otro problema que una configuración incorrecta de node-gyp . También tengo muchos otros módulos nativos construidos correctamente. No se produce ningún error durante la instalación.

Hay un problema con node v4 que impide tener c++ bson extension , lo que genera la advertencia js-bson: Failed to load c++ bson extension, using pure JS version .

Aquí está el registro completo cuando instalo mongoose ( [email protected] ) en node v4

apairet$ rm -rf node_modules/mongoose
apairet$ npm install
-
> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o

> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o

[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected])

En aras de la integridad, instalé la última versión de mongoose ( [email protected] ) pero el error siguió siendo el mismo:

apairet$ npm install mongoose<strong i="22">@latest</strong>
npm WARN peerDependencies The peer dependency kerberos@~0.0 included from mongodb-core will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
-
> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function 'gss_acquire_cred_impersonate_name' is invalid in C99 [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])

Avíseme si puedo proporcionar información adicional.
rgds

@antoinepairet ¿ qué versión del nodo exactamente? Hay muchas versiones de la v4.

Gracias por tu rápida respuesta @ vkarpov15. Realmente aprecio eso :-).
Perdón por no mencionar la versión del nodo en mi publicación anterior. Probé 3 versiones de nodo:
4.2.1 , 4.1.0 y 4.0.0 con el siguiente procedimiento:

  1. nvm install 4.1.0
  2. rm -rf módulos_nodo /
  3. npm install
  4. probar la aplicación y ver si se produce la advertencia

Cada vez que tenga js-bson: Failed to load c++ bson extension, using pure JS version

He realizado las pruebas extendidas en OSX. En Linux, solo probé 4.2.1 .

Avíseme si puedo proporcionar más información / pruebas.
Gracias de nuevo

PD: @AsyaHristeva No se trata de C++ IDE. otros módulos nativos se construyen bien :-)

Hmm en 4.1.1 [email protected] funciona bien en mi mac, y de cualquier manera ese error no debería ocurrir porque [email protected] usa [email protected], que no usa una extensión C ++ para BSON. Recibo este error con [email protected], pero eso se debe a que las versiones del controlador mongodb heredado, [email protected], realmente no admiten el nodo> = 4 .

Recibo el mismo error con Node v4.2.4, Mongo v2.6.11, OSX 10.11.2

npm install [email protected]
npm WARN peerDependencies The peer dependency kerberos@~0.0 included from mongodb-core will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.

> [email protected] install /Users/jw/Work/sp_app/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function 'gss_acquire_cred_impersonate_name' is invalid in C99 [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
npm WARN unmet dependency /Users/jw/Work/sp_app/node_modules/latest/node_modules/npm requires request@'~2.67.0' but will load
npm WARN unmet dependency /Users/jw/Work/sp_app/node_modules/request,
npm WARN unmet dependency which is version 2.27.0
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])

Cuando ejecuto mi aplicación, obtengo:

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

Me pregunto si esto es un problema de OSX porque no tengo ningún problema en Linux. ¿Podría esto tener algo que ver con gcc, el compilador de Clang predeterminado instalado por XCode?

gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.2.0
Thread model: posix

@ vkarpov15 tiene razón, actualice mangosta a 4.4.5 solucione este problema

@ vkarpov15 , ¿Estoy en lo cierto al suponer que este problema se debe a la ejecución de una versión más reciente de Mongoose con versiones anteriores de MongoDB, por ejemplo, la versión 2.X?

No, la versión mongodb no tiene nada que ver con eso.

[REPARADO]

Yo también tuve este problema


SO: Windows 10
nodo: v4.2.3
npm: 2.14.7


Simplemente configuro la ruta de Python

npm config set python python2.7

y reinstalar la mangosta

npm install mongoose


Y funcionó.

@ nityanarayan44 Me funcionó

@mgol
Yo uso OSX 10.10.5, nodo 4.4.2, npm 2.15.0, keystone 0.3.17

Fui a node_modules/keystone/package.json , y eliminé mongoose de las dependencias, luego

npm config set python python2.7
npm install mongoose

esto funcionó para mí:

También funcionó para mí la solución @ nityanarayan44

Mismo problema Mi versión es el nodo 2.15, plataforma Centos

No existe una versión de Nodo como 2.15, así que creo que te refieres a io.js. Y
io.js no ha sido compatible con upstream durante mucho tiempo, actualice al Nodo 4
o 6 lo antes posible.

Michał Gołębiowski

@arefm Thx, a mí me funcionó la actualización de la versión 3.8.23. Además, resolvió otro problema: la longitud no está definida, etc.

@mgol Estaba hablando de npm . La última versión de npm2 es 2.15.4.

@mnpenner creo que es 3.8.8

@jwerre Dije npm2. Algunos de nosotros estamos atascados en npm 2 porque 3 tiene una gran cantidad de problemas diferentes.

@mgol Lo sentimos, la versión npm es 2.15, no el nodo.

@mnpenner ¡ Sí, eres un hombre inteligente!

Cuando lo uso con Keystone, esto es lo que funcionó para superar ese error:

agregue lo siguiente a mis package.json deps:

"mongoose": "~4.4.16",
"mongodb": "~2.1.18",
"keystone": "^0.3.19",

luego

npm install

finalmente

rm -rf node_modules/keystone/node_modules/mongodb
rm -rf node_modules/keystone/node_modules/mongoose

Ahora no recibo el error.

@aventurella Me tocó la misma piedra cuando estoy probando Keystone hoy, gracias por tu solución.

pero ahora tenemos algunos errores extraños y algunos errores faltantes, ¿está bien?

@ tomwang1013 actualizar mangosta resolvió el problema, pero de alguna manera mi aplicación no se conecta a la base de datos .....

En nuestro caso, la razón por la que no se encontró la versión bson de c ++ fue porque estábamos detrás de un proxy corporativo y algo en el proceso de compilación de BSON necesita buscar archivos. Cuando miramos 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.

Perdón por volver a despertar los comentarios sobre esto, pero quería publicar esto para cualquier otra persona que lo haga en el futuro, ya que este hilo fue muy útil para resolver nuestro problema.

@aventurella gracias por tu solución, ¡funcionó! Aunque me hace sentir un poco raro.

Tengo este problema en Windows 10, tampoco puedo ejecutar un ejemplo "básico" ... se supone que los archivos de instalación deben proporcionar todo lo necesario para ejecutar algo, o al menos tener las instrucciones para hacerlo ...
¡¡¡¡Esto es jodidamente molesto !!!!! : @

@ GST5555 si desea obtener ayuda en tiempo real, no dude en unirse a nosotros en cualquiera de estas comunidades:
Gitter.im
Flojo

¿Fue útil esta página
0 / 5 - 0 calificaciones