npm安装mongoose失败(kerberos和bson错误)

npm安装mongoose失败(kerberos和bson错误),mongoose,npm,kerberos,bson,node-gyp,Mongoose,Npm,Kerberos,Bson,Node Gyp,因此,我尝试启动我的节点应用程序,但在安装MongoDB时出现了一些错误 以下是my dev环境的规范: node=>0.10.33(从nodejs.org安装) npm=>1.4.28(从nodejs.org安装) git=>2.1.3(自制) mongodb=>2.6.5(自制) 如果有区别的话,我还将使用作为教程的一部分 简而言之,当我尝试使用$node app.js运行我的节点应用程序时,我得到了以下反馈: USER$ npm install mongoose > kerbero

因此,我尝试启动我的节点应用程序,但在安装MongoDB时出现了一些错误

以下是my dev环境的规范:

node=>0.10.33(从nodejs.org安装)

npm=>1.4.28(从nodejs.org安装)

git=>2.1.3(自制)

mongodb=>2.6.5(自制)

如果有区别的话,我还将使用作为教程的一部分

简而言之,当我尝试使用
$node app.js
运行我的节点应用程序时,我得到了以下反馈:

USER$ npm install mongoose

> kerberos@0.0.4 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

> bson@0.2.15 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
mongoose@3.8.18 node_modules/mongoose
├── regexp-clone@0.0.1
├── muri@0.3.1
├── sliced@0.0.5
├── hooks@0.2.1
├── mpath@0.1.1
├── mpromise@0.4.3
├── ms@0.1.0
├── mquery@0.8.0 (debug@0.7.4)
└── mongodb@1.4.12 (readable-stream@1.0.33, kerberos@0.0.4, bson@0.2.15)
我检查了
kerberos
bson
模块的
builderror.log
文件。然而,两者都是空的

我发现的一些研究表明,问题可能是因为我的
节点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 server正在侦听的端口(duh)后,我收到更多反馈,表明我正在使用Mongoose 3.9.4,这是最新的
Mongoose
不稳定版本。因此,我在我的
package.json
中将模块设置为3.8.18,并尝试重新安装模块。我收到了同样的错误。但是,不稳定的发布反馈现在消失了。

在我将cd放入
kerberos
bson
目录后,我使用命令
$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数据库
。这将为Node.js应用程序创建一个名为
database
的数据库实例来连接。在原始终端窗口中,调用
$node app.js
,它将在没有任何错误反馈的情况下运行


我得到的错误不是Mongoose、MongoDB或其任何依赖项的错误构建的结果。这些错误是对MongoDB的误解造成的。MongoDB必须作为一个独立于Node.js应用程序的进程运行,才能使应用程序建立数据库连接。

我已通过将Node gyp安装到全局作用域中解决了这一问题。希望能有帮助

$ npm install -g node-gyp 

我只是卸载mongodb,然后成功安装mongoose

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

对于Linux发行版上的任何人,请确保安装了
libkrb5 dev
(或发行版的类似软件包)。这将解决bson和kerberos的许多构建错误。

对于ubuntu用户,首先卸载moongose

npm uninstall mongoose --save
然后安装kerberos更新

apt-get install libkrb5-dev
然后再次“安装”moongose

npm install mongoose --save

我希望这对那里的人有帮助。

非常感谢,它很有效!我在LinuxMint17中遇到了同样的问题,并决定安装这个包:使用这个技巧安装Mongoose和MongoDB。我的终端中仍然有一些警告,但没有错误。Ubuntu 14.04.In centOS:
yum在Alpine中安装krb5服务器krb5工作站krb5 libs krb5 devel
,如果有人在docker映像中执行此操作,则包是
krb5 dev