我在windows xp 32位操作系统上使用mongodb 3.0和mongoose 4.0 它对我的小项目不起作用并且出错。我试图简化问题。 所以我做了一个快速测试:
express microblog
npm install
然后在db.js中,我把
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/test',console.error.bind(console, 'connection error:'));
var db = mongoose.connection;
db.once('open', function (callback) {
console.log("succesfully connected");
});
然后我在端口27017启动了mongodb服务器。当我运行db.js时,我得到了这样的东西:
C:\Program Files\nodejs\test\microblog>node db.js
{ [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
{ [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
connection error: { [MongoError: connect UNKNOWN] name: 'MongoError', message: '
connect UNKNOWN' }
最后一行与我在其他小项目中的内容相同。 我试着安装mongodb2.6,它有同样的问题。 当我在其他js文件中使用mongo-connection而不是mongoose时,mongodb服务器工作。我尝试重新启动计算机,删除了锁定文件并执行了mongod --repair,问题仍然存在,请帮助,非常感谢...
答案 0 :(得分:0)
问题是WinXP。较新版本的MongoDB不支持WinXP,而Mongoose使用mongodb模块作为依赖。 尝试使用旧版本的Mongoose,这是我的package.json用于测试应用程序:
{
"name": "test",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.13.2",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"ejs": "~2.3.3",
"express": "~4.13.1",
"mongoose": "3.8",
"morgan": "~1.6.1",
"serve-favicon": "~2.3.0"
}
}
Mongoose的3.8版本使用mongodb v1.4.38作为依赖,它在WinXP上运行正常。