这里有一个总节点noob . 我一直在尝试设置一个示例节点应用程序但每次尝试运行时都会弹出以下错误:
节点应用
Failed to load c++ bson extension, using pure JS version
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [#$%67890 :27017]
at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74)
at EventEmitter.emit (events.js:106:17)
at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)
at EventEmitter.emit (events.js:98:17)
at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:830:16
at process._tickCallback (node.js:415:13)
30 回答
如果bson扩展名不是't the reason, I guessed the other reason for 2504207 would be the user id' s . 所以我创建了一个新数据库,并为数据库添加了一个用户,并为该用户提供了密码( note :不是mongolab帐户密码) . 我更新了我的代码和瞧!有效 . 对吧? :d
我已经通过以下方式对raspbian(debian for raspberry)获取“无法加载c bson扩展”的问题进行了排序:
然后
以下是我在Ubuntu上修复问题的方法:
ln -s /usr/bin/nodejs /usr/bin/node
npm install node-gyp
cd node_modules/mongodb/node_modules/bson
node-gyp rebuild
灵感来自@mbochynski的答案,但我必须首先创建一个符号链接,否则重建失败 .
我修改了/更改/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js的第10行:
至:
我遇到了同样的麻烦尝试了这么多选项,但在最后
npm intall
在我的意思是app文件夹工作 .我猜你在安装mongodb库时没有make工具 . 我建议你这样做
xcode-select --install
(在mac上)或sudo apt-get install gcc make build-essential
(在ubuntu上)并运行
或者只是基于@tobias注释的npm更新(在安装build-essential之后)
我刚解决了这个问题 .
当您通过npm安装mongoose模块时,它的文件夹中没有内置的bson模块 . 在文件
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
中,更改行至
然后使用npm安装bson模块 .
我无法解决这个问题
到现在 . 首先,您必须拥有Pradeep Mahdevu提到的系统包 . 那些是:
要么
然后我安装了node-gyp
就像datadracer所说的那样,但他建议的npm更新也是有风险的 . 它更新所有模块,这可能是危险的(有时版本之间的API更改) .
我建议进入 node_modules/mongodb/node_modules/bson 目录并从那里使用
这解决了我的问题 .
一个常见的问题是node-gyp需要Python 2.x,如果你的系统的
python
指向3.x,它将无法编译bson
,而不会发出警告 . 您可以通过在npm配置中设置指向系统上2.x可执行文件的python
全局密钥来解决此问题 . 例如,在Arch Linux上:在WIN 8.1上
好像我在package.json文件中使用了错误版本的mongoose .
我从package.json中删除了行“mongoose”:“^ 3.8.15”
CLI:npm install mongoose --save
现在它在package.json中说“mongoose”:“^ 4.0.6”,我的错误消失了 .
我正在运行Ubuntu 14.04并为我修复它我必须为 node 创建一个符号链接指向 nodejs ,如下所述:
nodejs vs node on ubuntu 12.04
一旦我这样做,我重新运行这些命令:
只是想说我也有错误
但没有其他错误 . 我尝试了一切,结果我在package.json文件中指定的mongodb驱动程序与我的MongoDB版本不兼容 . 我将它更改为我的最新版本(1.4.34)并且它有效!
所以在我的情况下,我首先尝试检查此目录/ node_modules / mongoose / node_modules /,只是为了确认我有 bson 模块 . 我发现我首先没有它,然后我就跑了
然后
所有都得到了排序 . 在Ubuntu中进行了测试和测试 .
sudo npm rebuild
是为我修好的 .我终于通过在package.json中将我的mongodb依赖版本更新为“~2.0.36”来纠正此错误 .
不幸的是,所有上述答案只有一半是正确的..花了很长时间才弄清楚这一点..
通过npm安装Mongoose bson会引发警告并导致错误...
这就像魔术!
bson扩展消息只是一个 warning ,我在我的nodejs应用程序中一直得到它 .
Things to check:
MongoDB instance :您是否正在运行MongoDB实例?
Config :您是否正确配置了Mongoose到您的MongoDB实例?我怀疑你的配置是错误的,因为错误消息为你的mongodb服务器主机名吐出了一个非常奇怪的字符串 .
对我来说,只需要在我的api目录中运行这些命令:
我跑了:
和
一切都变好了 .
我也遇到了这个问题,导致我的会话无法正常工作 . 但是不要打破......
我使用了猫鼬连接 .
我有这个:
非常直截了当 . 但是req.session一直都是空的 .
诀窍 . 注意你的package.json中没有'mongodb'!只是Mongoose和connect-mongo .
我在CentOS上解决了这个问题
sudo yum groupinstall "Development Tools"
sudo npm install -g node-gyp
rm -r node_modules
npm缓存清理
npm安装
我的EC2实例遇到了同样的问题 . 我认为最初的原因是因为我在安装Mongo时运行了一个Node实例 . 我停止了Node服务然后运行
在我的节点的顶级文件夹内项目 . 这解决了问题,一切都像新的一样
我遇到了这个问题,因为我在我的Git存储库中包含了node_modules文件夹 . 当我在另一个系统上重建node_modules时,它工作了 . 其中一个是运行Linux,另一个是OS X.也许他们有不同的处理器架构 .
我也遇到了同样的问题,我是Mac OSX用户 . 基本上,您需要确保已在Xcode中安装了Xcode和“命令行工具” .
Xcode是免费的,可以在这里下载:https://developer.apple.com/xcode/downloads/
安装Xcode后,打开它并单击下拉菜单中的“首选项”,然后单击“下载”图标 . 确保安装了“命令行工具” .
然后像上面提到的所有其他用户一样运行以下命令:
我试图在虚拟机(vagrant)共享文件夹上运行节点 . 那是一个问题 . 我的主机是Windows,安装在Windows上的节点,就像一个魅力 . 因此,如果您使用的是虚拟机,请尝试在主机上运行节点服务器 .
我只是遇到了同样的问题,对我来说没什么用 . 错误显示
kerberos
导致问题,它是mongoose
依赖项之一 . 由于我在Ubuntu上,我认为全局安装的软件包之间可能存在权限问题 - 在/usr/lib/node_modules
中通过sudo
,以及在用户空间上的那些 .我全局安装
mongoose
- 当然sudo
,一切都按预期开始工作 .附:
kerberos
包现在也全局安装在mongoose
旁边,但是我不记得我是否故意这样做 - 当我试图解决问题时,或者它是否从一开始就存在 .我正在使用centOS 7处理Docker,并遇到了同样的问题 .
环顾四周,并尝试了几次,我通过安装mongodb和mongodb-server解决了这个问题
我不认为这是 生产环境 最小容器的最佳方法 . 但我可以将范围限制在以下包中
对于Windows 7.1,这些说明帮助我修复了我的构建环境:
https://github.com/mongodb/js-bson/issues/58#issuecomment-68217275
http://christiankvalheim.com/post/diagnose_installation_problems/
我能够通过卸载和重新安装monk包来解决 . 初始安装似乎有一个损坏的mongodb / bson依赖 .
在ubuntu 14.04上我需要在/ usr / bin中创建一个链接,因为/ usr / bin / env正在寻找/ usr / bin / node
ln -s / usr / bin / nodejs / usr / bin / node
可以在每个目录的builderror.log中找到错误消息,以便消息:
查看此文件以获取有关确切问题的更多信息
/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/builderror.log