npm install mongoose 失败(kerberos 和 bson 错误)

Posted

技术标签:

【中文标题】npm install mongoose 失败(kerberos 和 bson 错误)【英文标题】:npm install mongoose fails (kerberos and bson errors) 【发布时间】:2015-01-02 06:53:46 【问题描述】:

所以我正在尝试启动我的节点应用程序,但是我的 MongoDB 安装出现了一些错误。

以下是我的开发环境的规格:

node => 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

> 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)

我检查了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 并尝试重新安装模块。我收到了同样的错误。不过现在不稳定的发布反馈已经没有了。

【问题讨论】:

【参考方案1】:

ubuntu用户,先卸载moongose

npm uninstall mongoose --save

然后安装一个kerberos更新

apt-get install libkrb5-dev

然后再次“安装”月光

npm install mongoose --save

我希望这可以帮助那里的人。

【讨论】:

【参考方案2】:

对于使用 Linux 发行版的任何人,请确保您已安装 libkrb5-dev(或您的发行版的类似软件包)。这将处理 bson 和 kerberos 的许多构建错误。

【讨论】:

非常感谢,它有效!我在 Linux Mint 17 中遇到了同样的问题,并决定安装该软件包:community.linuxmint.com/software/view/libkrb5-dev 使用此技巧成功安装了 Mongoose 和 MongoDB。我的终端中仍然有一些警告,但没有错误。 Ubuntu 14.04。 在centOS中(from docs, I think?):yum install krb5-server krb5-workstation krb5-libs krb5-devel 在 Alpine 中,如果有人在 docker 映像中执行此操作,则包是 krb5-dev 成功了。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

我已通过将 node-gyp 安装到全局范围来解决此问题。希望对您有所帮助。

$ npm install -g node-gyp 

【讨论】:

【参考方案5】:

在我cd'd 进入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。这将创建名为 database 的数据库实例,供您的 Node.js 应用程序连接。在您原来的终端窗口中,调用$ node app.js,它将运行而没有任何错误反馈。

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

【讨论】:

以上是关于npm install mongoose 失败(kerberos 和 bson 错误)的主要内容,如果未能解决你的问题,请参考以下文章

npm install mongoose 导致 gyp 和 kerberos 错误(未找到 gssapi/gssapi.h 文件)

无法通过 npm 安装 mongoose - 依赖失败 es6-promise 3.0.2

npm install失败 代理问题

npm install 失败

npm install 失败

npm install firebase 失败