2

在 Windows 7 积分系统上使用 mongodb3.0、节点 0.12.0、npm 2.5.1,我正在尝试将数据读写到我的数据库中,但我在 npm intsall 中有这个错误!

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }

js-bson: Failed to load c++ bson extension, using pure JS version
{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }

js-bson: Failed to load c++ bson extension, using pure JS version

我试图更换

bson = require('../build/Release/bson');

进入

bson = require('../browser_build/bson');

但我有这样的错误:

 exports.BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0 TypeError: Cannot set property       'BSON_BINARY_SUBTYPE_DEFAULT' of undefined  

我正在使用和尚,anfd 我已经运行了 npm mongodb,npm Mongodb

4

4 回答 4

6

问题: Mongo-DB、Socket.io 等模块需要node- gyp来编译 Kim 也讨论过的 C/C++ 代码。MSVC++ 仅适用于 32 位操作系统,现在这是真正的问题,因为如果您安装了 node.js 和其他要求(如64 位版本的Python 2.7.3),那么您将面临像我一样的问题.

按着这些次序:

  • 卸载 Node.js
  • 卸载所有模块,包括 Python
  • 现在安装上述所有已卸载应用程序和平台的 32 位版本。
  • 遵循所有必要的步骤。
  • 现在安装您要使用的模块。

安装时您可能会看到一些错误,但不要惊慌。尝试运行您的应用程序,它会正常工作。

注意:此解决方案是特定于平台的,即适用于 MS Windows。

于 2015-04-18T07:30:39.313 回答
1

我在 Windows 8.1 上,但我所做的是首先安装 python 2.7.9 和 Visual Studio 社区版。两者都是编译 bson 所必需的。然后我安装了:“npm install -g node-gyp”,之后我刚刚从我的项目中删除了 node_modules 并再次执行了“npm install”。解决了。当我再次安装时,我可以在控制台上看到消息说 bson 正在编译。

于 2015-05-09T22:08:17.323 回答
0

MongoDB 依赖于一些库。在某些时候你会这样做:

npm install mongodb --save

这些依赖项之一是编译 bson 所需的node- gyp。重要的是,node-gyp 需要安装 Python 2.7 和 Microsoft Visual Studio(请参阅node-gyp 的安装部分)。如果您没有 Python 2.7 和 Visual Studio,则 node-gyp 将无法构建,这意味着它无法编译 bson(导致初始错误)。

导航到:node_modules\mongodb\node_modules\mongodb-core\node_modules\bson

您应该找到builderror.log文件,其中包含有关 node-gyp 构建失败原因的更多信息。这很可能是由于未安装 Python 2.7 或 Visual Studio。

这是我必须做的修复它:

我遇到了和你一样的问题,没有找到 bson 模块错误。我也像您一样更改了require行,并以同样的错误结束(exports.BSON ...)。然后我卸载了mongodb和mongodb:

npm uninstall mongodb --save
npm uninstall monk --save

安装了 Python 2.7 和 Microsoft Visual Studio,然后再次安装了 mongodb 和 Mongo:

npm install mongodb --save
npm install monk --save

这解决了它。

于 2015-03-24T22:33:25.587 回答
0

当我更改节点 10.34 和 nom 1.4.28 的版本时,问题已解决

于 2015-03-26T19:11:43.327 回答