para - script type= text/javascript src=
Error al cargar la extensión c++ bson (30)
Un nodo novato total aquí. He intentado configurar una aplicación de nodo de muestra, pero el siguiente error sigue apareciendo cada vez que intento ejecutar:
aplicación nodo
Failed to load c++ bson extension, using pure JS version
events.js:72
throw er; // Unhandled ''error'' event
^
Error: failed to connect to [#$%67890 :27017]
at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74)
at EventEmitter.emit (events.js:106:17)
at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)
at EventEmitter.emit (events.js:98:17)
at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:830:16
at process._tickCallback (node.js:415:13)
Acabo de correr:
sudo npm install bson
y
sudo npm update
y todos se vuelven correctos
Acabo de resolver eso.
Cuando instala el módulo de mangosta por npm, no tiene un módulo bson incorporado 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'');
a
bson = require(''bson'');
y luego instale el módulo bson usando npm.
Así es como solucioné el problema en Ubuntu:
-
ln -s /usr/bin/nodejs /usr/bin/node
-
npm install node-gyp
-
cd node_modules/mongodb/node_modules/bson
-
node-gyp rebuild
Inspirado por la respuesta @mbochynski, pero primero tuve que crear un enlace simbólico, de lo contrario la reconstrucción falló.
El mensaje de extensión bson es solo una advertencia , lo obtengo todo el tiempo en mi aplicación nodejs.
Cosas para verificar:
- Instancia de MongoDB : ¿Tienes una instancia de MongoDB ejecutándose?
- Config : ¿Ha configurado correctamente Mongoose en su instancia de MongoDB? Sospecho que su configuración es incorrecta, porque el mensaje de error arroja una cadena muy extraña para el nombre de host de su servidor mongodb.
En WIN 8.1
Parece que utilicé una versión incorrecta de mangosta en mi archivo package.json.
Quité la línea "mangosta": "^ 3.8.15" de package.json
CLI: npm install mongoose --save
Ahora dice "mangosta": "^ 4.0.6" en package.json y el error que tuve se fue.
Entonces, en mi caso, primero traté de verificar bajo este directorio / node_modules / mongoose / node_modules / , solo para confirmar que tengo el módulo bson . Descubrí que no lo tenía en primer lugar, luego solo corrí
npm install bson
y entonces
npm update
Todo fue ordenado. Probado y probado en Ubuntu.
Estaba intentando ejecutar el nodo en la carpeta compartida de la máquina virtual (vagabundo). Eso fue un problema. Mi equipo host es Windows, nodo instalado en Windows y funcionaba como un hechizo. Por lo tanto, si está utilizando una máquina virtual, intente ejecutar el servidor de nodo en la máquina host.
Estoy ejecutando Ubuntu 14.04 y para solucionarlo tuve que crear un enlace simbólico para que el nodo apunte a nodejs como se describe aquí:
nodejs vs node en ubuntu 12.04
Una vez que lo hice, volví a ejecutar estos comandos:
rm -rf node_modules
npm cache clean
npm install
Estoy trabajando en Docker con CentOS 7, y encontré el mismo problema.
Después de mirar alrededor y hacer varios intentos, solucioné este problema instalando mongodb y mongodb-server
yum install mongodb mongodb-server
No creo que esta sea la mejor forma de producir el contenedor mínimo. pero puedo limitar el alcance en los siguientes paquetes
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
mongodb x86_64 2.6.5-2.el7 epel 57 M
mongodb-server x86_64 2.6.5-2.el7 epel 8.7 M
Installing for dependencies:
boost-filesystem x86_64 1.53.0-18.el7 base 66 k
boost-program-options x86_64 1.53.0-18.el7 base 154 k
boost-system x86_64 1.53.0-18.el7 base 38 k
boost-thread x86_64 1.53.0-18.el7 base 56 k
gperftools-libs x86_64 2.1-1.el7 epel 267 k
libpcap x86_64 14:1.5.3-3.el7_0.1 updates 137 k
libunwind x86_64 1.1-3.el7 epel 61 k
snappy x86_64 1.1.0-3.el7 base 40 k
Finalmente corregí este error actualizando mi versión de dependencia mongodb a "~ 2.0.36" en package.json.
"dependencies": {
"consolidate": "~0.9.1",
"express": "3.x",
"mongodb": "~2.0.36",
"mongoose": "^4.1.12"
}
He solucionado el problema de obtener la "Error al cargar la extensión c ++ bson" en raspbian (debian para frambuesa) por:
npm install -g node-gyp
y entonces
npm update
Lamentablemente, todas las respuestas anteriores son solo la mitad de lo correcto ... Tomó mucho tiempo para resolver esto ...
La instalación de Mongoose bson vía npm arroja una advertencia y causa 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 !!
Lo arreglé cambiando la línea 10 de /node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js desde:
bson = require(''../build/Release/bson'');
a:
bson = require(''bson'');
No pude resolver esto
hasta ahora. En primer lugar, debe tener paquetes de sistema mencionados por Pradeep Mahdevu. Esos son:
xcode-select --install (on a mac)
o
sudo apt-get install gcc make build-essential (on ubuntu)
Entonces he instalado node-gyp
npm install -g node-gyp
como datadracer dijo, pero la actualización de npm también sugerida por él es arriesgada. Actualiza todos los módulos, lo que puede ser peligroso (a veces, los cambios API entre versiones).
Sugiero ir al directorio node_modules / mongodb / node_modules / bson y desde allí usar
node-gyp rebuild
Eso resolvió el problema para mí.
Para Windows 7.1, estas instrucciones me ayudaron a solucionar mi entorno de compilación:
https://github.com/mongodb/js-bson/issues/58#issuecomment-68217275
http://christiankvalheim.com/post/diagnose_installation_problems/
Para mí, solo es necesario ejecutar estos comandos en mi directorio api:
rm -rf node_modules
npm cache clean
npm install
Pude resolver desinstalando y reinstalando el paquete monk. La instalación inicial aparentemente tenía una dependencia mongodb / bson corrupta.
Si la extensión bson no era la razón, supuse que la otra razón para "no se pudo conectar" sería la identificación del usuario. Así que creé una nueva base de datos y agregué un usuario para la base de datos, con una contraseña para ese usuario ( nota : contraseña de la cuenta no mongolab). Actualicé esos en mi código y ¡voilá! Funcionó. Duh ¿verdad? :RE
Simplemente tuve el mismo problema y, literalmente, nada funcionó para mí. El error mostraba que kerberos
estaba causando el problema y que era una de las dependencias de mongoose
. Como estoy en Ubuntu, pensé que podría haber problemas de permisos en algún lugar entre los paquetes instalados globalmente, en /usr/lib/node_modules
través de sudo
, y los que están en el espacio de usuario.
Instalé mongoose
todo el mundo, con sudo
por supuesto, y todo comenzó a funcionar como se esperaba.
PD: El paquete kerberos
ahora también está instalado globalmente al lado de mongoose
, sin embargo, no recuerdo si lo hice deliberadamente, mientras intentaba resolver el problema, o si estaba allí desde el principio.
Solucioné este problema en CentOS por
- sudo yum groupinstall "Herramientas de desarrollo"
- sudo npm install -g node-gyp
- rm -r node_modules
- npm caché limpia
- npm instalar
Supongo que no tenía las herramientas make disponibles cuando instaló su biblioteca mongodb. Te sugiero que hagas
xcode-select --install
(en un mac) o sudo apt-get install gcc make build-essential
(en ubuntu)
y correr
rm -rf node_modules
npm cache clean
npm install
O simplemente actualización de npm basada en el comentario de @tobias (después de instalar build-essential)
npm update
También encontré el mismo problema y soy un usuario de Mac OSX. Básicamente, debe asegurarse de haber instalado Xcode y también las "Herramientas de línea de comando" dentro de Xcode.
Xcode es gratuito y se puede descargar aquí: https://developer.apple.com/xcode/downloads/
Después de haber instalado el Xcode, ábralo y haga clic en "Preferencia" en el menú desplegable, y haga clic en el icono "Descargas". Asegúrese de tener instaladas las "Herramientas de línea de comando".
Luego ejecute los siguientes comandos como todos los otros usuarios mencionados anteriormente:
rm -rf node_modules
npm cache clean
npm install
También tuve este problema e hizo que mis sesiones no funcionaran. Pero no para romper tampoco ...
Usé una conexión de mangosta.
Tenía esto:
var mongoose = require(''mongoose'');
var express = require(''express'');
var cookieParser = require(''cookie-parser'');
var expressSession = require(''express-session'');
var MongoStore = require(''connect-mongo'')(expressSession);
...
var app = express();
app.set(''port'', process.env.PORT || 8080);
app.use(bodyParser);
mongoose.connect(''mongodb://localhost/TEST'');
var db = mongoose.connection;
db.on(''error'', console.error.bind(console, ''connection error:''));
db.once(''open'', function callback () {
console.log(''MongoDB connected'');
});
app.use(cookieParser());
app.use(expressSession({
secret: ''mysecret'',
cookie: {
maxAge: null,
expires: moment().utc().add(''days'',10).toDate(),// 10 dagen
},
store: new MongoStore({
db: ''TEST'',
collection: ''sessions'',
}),
Muy sencillo. Pero la req.session permaneció siempre vacía.
rm -rf node_modules
npm cache clean
npm install
Hizo el truco. Cuidado con que no tienes un ''mongodb'' en tu paquete. ¡Json! Sólo Mongoose y connect-mongo.
Tuve el mismo problema en mi instancia de EC2. Creo que la causa inicial fue porque tenía una instancia de Node ejecutándose cuando instalé Mongo. Paré el servicio Node y luego corrí
sudo npm update
dentro de la carpeta de nivel superior de mi proyecto de nodo. Esto solucionó el problema y todo era como nuevo
Tuve este problema porque estaba incluyendo la carpeta node_modules en mi repositorio de Git. Cuando reconstruí los node_modules en el otro sistema funcionó. Uno de ellos estaba ejecutando Linux, el otro OS X. Tal vez tenían diferentes arquitecturas de procesador también.
Un problema común es que node-gyp requiere Python 2.x y si el sistema python
apunta a 3.x, no podrá compilar bson
, sin previo aviso. Puede solucionar esto configurando una clave global python
en su configuración npm que apunta al ejecutable 2.x en su sistema. Por ejemplo, en Arch Linux:
npm config -g set python "/usr/bin/python2"
en ubuntu 14.04 necesitaba crear un enlace en / usr / bin porque / usr / bin / env estaba buscando / usr / bin / node
ln-usr / bin / nodejs / usr / bin / node
Los mensajes de error se pueden encontrar en builderror.log en cada directorio para el mensaje:
[email protected] install / usr / local / lib / node_modules / mongodb / node_modules / mongodb-core / node_modules / bson (node-gyp rebuild 2> builderror.log) || (salida 0)
mira este archivo para más información sobre el problema exacto
/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/builderror.log
estaba teniendo el mismo problema intenté con tantas opciones pero npm intall
en la última npm intall
en mi carpeta de aplicaciones.
solo quería decir que también tuve el error
Failed to load c++ bson extension, using pure JS version
Pero con ninguno de los otros errores. Intenté todo y resultó que los controladores de mongodb que estaba especificando en el paquete. El archivo json era incompatible con mi versión de MongoDB. Lo cambié a mi última versión que era (1.4.34) y funcionó !!!
sudo npm rebuild
fue lo que lo solucionó.