2014-11-05 156 views
23

所以我试图启动我的节点应用程序,但是我的MongoDB安装出现了一些错误。npm install mongoose失败(kerberos和bson错误)

下面是我的开发环境的规格:=> 0.10.33(从nodejs.org安装)

NPM => 1.4.28(从安装的NodeJS

节点.ORG)

的git => 2.1.3(家酿)

mongodb => 2.6.5(自制)

如果它有所不同,我也使用Mean Stack Skeleton作为教程的一部分。

概括地说,当我尝试使用$ node app.js运行我的节点的应用程序,我得到以下回馈:

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文件既kerberosbson模块。但是,两者都是空的。

我发现的一些研究表明,这个问题可能是因为我的node-gyp安装没有对应的binding.gyp文件。

也尝试在我的Node.js项目文件夹内运行$ node-gyp configure。这是我收到的错误:

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 

任何想法,为什么我有这些问题?

编辑:在我的app.js文件中设置端口以设置端口为Express服务器正在监听(duh)相同的端口后,我得到更多反馈,表明我正在使用Mongoose 3.9.4,这是mongoose的最新不稳定版本。所以我在我的package.json中将模块设置为3.8.18,并试图重新安装模块。我收到了同样的错误。然而,不稳定的释放反馈现在消失了。

回答

0

当我将cd'转入kerberosbson目录后,我使用命令$ node-gyp rebuild和节点模块正确编译。

app.js文件,我叫下面几行:

var app = express(); 
... 
var Mongoose = require('mongoose'); 
var db = Mongoose.createConnection('localhost','database'); 

// all environments 
app.set('port', process.env.PORT || 3000); 

此端口号必须从您的数据库实例的端口是唯一的。

在单独的终端窗口中,运行$ mongod来暂存您的MongoDB。一旦被叫,在另一个终端窗口中,您可以拨打$ mongo database。这会为您的Node.js应用程序创建名为database的数据库实例以连接到该实例。在您的原始终端窗口中,拨打$ node app.js,它将在没有任何错误反馈的情况下运行。

我得到的错误不是Mongoose,MongoDB或其任何依赖项的错误构建的结果。错误是由于对MongoDB的误解而导致的。 MongoDB必须作为独立于Node.js应用程序的进程运行,以便应用程序建立数据库连接。

13

我已经通过将node-gyp安装到全局范围中解决了这个问题。希望能帮助到你。

$ npm install -g node-gyp 
+0

简单,甜美,并为我工作 – 2015-03-28 20:07:39

+0

非常感谢你 – Shreyas 2015-07-12 08:47:08

4

我只是卸载mongodb,然后成功安装猫鼬。

npm uninstall mongodb --save 
npm install mongoose --save 
54

有关在Linux发行人保证你有libkrb5-dev(或你的发行版的类似的包)安装。这将处理与bson和kerberos的许多构建错误。

+2

完美工作 – MQ87 2015-09-18 12:36:09

+1

非常感谢,它的工作原理!我在Linux Mint 17中遇到了同样的问题,并且解决了安装该软件包的问题:http://community.linuxmint.com/software/view/libkrb5-dev – iarroyo 2015-09-22 16:03:43

+1

使用此提示管理安装Mongoose和MongoDB。我的终端仍然有一些警告,但没有错误。 Ubuntu 14.04。 – piratemurray 2015-10-01 18:30:38

18

为Ubuntu用户,请先卸载moongose

npm uninstall mongoose --save 

然后安装一个Kerberos更新

apt-get install libkrb5-dev 

然后 “安装” moongose再次

npm install mongoose --save 

我希望这可以帮助别人有。