mongoose - parser - npm mongodb
npm install mongoose failed(errores kerberos y bson) (5)
Después de hacer un cd
''d en los directorios kerberos
y bson
, utilicé el comando $ node-gyp rebuild
y los módulos de nodo compilados correctamente.
Mi archivo app.js
, llamé a las siguientes líneas:
var app = express();
...
var Mongoose = require(''mongoose'');
var db = Mongoose.createConnection(''localhost'',''database'');
// all environments
app.set(''port'', process.env.PORT || 3000);
Este número de puerto debe ser exclusivo del puerto de su instancia de base de datos.
En una ventana de terminal separada, ejecute $ mongod
para $ mongod
su MongoDB. Una vez que se llama, en otra ventana de terminal, llama a la $ mongo database
. Esto crea la instancia de database
de database
llamada database
de database
para su aplicación Node.js para conectarse. En la ventana de terminal original, llame $ node app.js
y se ejecutará sin ningún comentario de error.
Los errores que estaba obteniendo no eran el resultado de una compilación incorrecta de Mongoose, MongoDB o cualquiera de sus dependencias. Los errores fueron el resultado de una idea falsa sobre MongoDB. MongoDB debe ejecutarse como un proceso separado de su aplicación Node.js para que la aplicación establezca una conexión de base de datos.
Así que estoy intentando iniciar mi aplicación de nodo, pero hay algunos errores que surgen de mi instalación de MongoDB.
Estas son las especificaciones para mi entorno de desarrollo:
nodo => 0.10.33 (instalado desde nodejs.org)
npm => 1.4.28 (instalado desde nodejs.org)
git => 2.1.3 (casero)
mongodb => 2.6.5 (casero)
Si hace una diferencia, también estoy usando el Esqueleto de pila promedio como parte de un tutorial.
En pocas palabras, cuando intento ejecutar mi aplicación de nodo usando $ node app.js
, obtengo los siguientes comentarios:
USER$ npm install mongoose
> [email protected] install /Users/USER/APP/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
CXX(target) Release/obj.target/kerberos/lib/worker.o
CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
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
SOLINK_MODULE(target) Release/kerberos.node: Finished
> [email protected] install /Users/USER/APP/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
SOLINK_MODULE(target) Release/bson.node
SOLINK_MODULE(target) Release/bson.node: Finished
[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])
builderror.log
archivos builderror.log
para los módulos kerberos
y bson
. Sin embargo, ambos están vacíos.
Algunas investigaciones que he encontrado sugieren que el problema podría deberse a que mi instalación node-gyp
no tiene un archivo binding.gyp
correspondiente.
También intenté ejecutar $ node-gyp configure
dentro de mi carpeta de proyecto Node.js. Y este es el error que recibí:
gyp: binding.gyp not found (cwd: /Users/USER/APP) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/node-gyp/lib/configure.js:343:16)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Darwin 12.5.0
gyp ERR! command "node" "/usr/local/bin/node-gyp" "configure"
gyp ERR! cwd /Users/USER/APP
gyp ERR! node -v v0.10.33
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok
¿Alguna idea de por qué estoy teniendo estos problemas?
EDITAR: Después de configurar el puerto en mi archivo app.js
para configurar el puerto en el mismo que el servidor Express está escuchando (duh), recibo más comentarios que indican que estaba usando Mongoose 3.9.4, que es el último inestable lanzamiento de mongoose
. Así que configuré el módulo en 3.8.18 en mi package.json
e intenté reinstalar el módulo. Recibí los mismos errores. Sin embargo, la información de lanzamiento inestable ya no está.
Lo solucioné instalando node-gyp en el alcance global. Espero eso ayude.
$ npm install -g node-gyp
Para cualquier persona en una distribución de Linux, asegúrese de tener libkrb5-dev
(o el paquete similar de su distribución). Esto se ocupará de muchos errores de compilación con bson y kerberos.
Para usuarios de ubuntu, primero desinstala moongose
npm uninstall mongoose --save
luego instala una actualización de kerberos
apt-get install libkrb5-dev
luego "instala" moongose nuevamente
npm install mongoose --save
Espero que esto ayude a alguien allí.
Simplemente desinstalo mongodb y luego instalo mangosta con éxito.
npm uninstall mongodb --save
npm install mongoose --save