在运行节点应用程序时未捕获,未指定“错误”

我是node.js express.js的初学者。 (今天早上开始:-))我已经包含了db.js,它有我的连接细节到mongolab和User.js这是我的模型。 请find下面的代码。

Db.js

var mongoose = require('mongoose'); var Schema = mongoose.Schema; module.exports.mongoose = mongoose; module.exports.Schema = Schema; // Connect to cloud database var username = "Ausername" var password = "Apassword"; var address = 'Aaddress'; connect(); // Connect to mongo function connect() { var url = 'mongodb://' + username + ':' + password + address; mongoose.connect(url); } function disconnect() {mongoose.disconnect()} 

user.js的

 var db = require('../lib/db'); var UserSchema = new db.Schema({ username : {type: String, unique: true} , password : String }) var MyUser = db.mongoose.model('User', UserSchema); // Exports module.exports.addUser = addUser; // Add user to database function addUser(username, password, callback) { var instance = new MyUser(); instance.username = username; instance.password = password; instance.save(function (err) { if (err) { callback(err); } else { callback(null, instance); } }); } 

而当我运行节点的应用程序,它报告下面的错误

 C:\Sripaul\Softwares\NodeJS\Projects\authentication>node app Express server listening on port 3000 C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\utils.js:413 throw err; ^ Error: Uncaught, unspecified 'error' event. at NativeConnection.EventEmitter.emit (events.js:68:15) at Model.init (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\model.js:554:31) at exports.tick (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\utils.js:408:16) at Db.ensureIndex (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1066:28) at Db.indexInformation (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1200:28) at Cursor.toArray (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:124:30) at Cursor.each (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:166:32) at Cursor.nextObject.self.queryRun (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:441:39) at Cursor.close (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:687:5) at Cursor.nextObject.commandHandler (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:441:21) 

在app.js中的代码如下

 app.post('/signup', function(req, res) { var username = req.body.username; var password = req.body.password; User.addUser(username, password, function(err, user) { if (err) throw err; res.redirect('/form'); }); }); 

有人可以帮我解决吗?

看起来像在mongo实验室这个问题发生,因为它不能连接到亚马逊云。 我试过Joyent Cloud,它运行良好。

面对类似的问题,错误信息是一致的,但堆栈跟踪是不同的,

 /%/node_modules/mongoose/lib/utils.js:413 throw err; ^ TypeError: Uncaught, unspecified "error" event. at TypeError (<anonymous>) at NativeConnection.EventEmitter.emit (events.js:74:15) at /%/authentication/node_modules/mongoose/lib/model.js:554:31 at /%/authentication/node_modules/mongoose/lib/utils.js:408:16 at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1066:28 at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1200:28 at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:124:30 at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:166:32 at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:441:39 

修正它是在db.js中的地址variables之前删除额外的空间(如书中)。

 var address = ' @dbh42.mongolab.com:27427/nockmarket'; 

应该(介意空间)

 var address = '@dbh42.mongolab.com:27427/nockmarket'; 

我知道这是一个老话题,但是我解决了这个问题:

在package.json中:而不是“mongoose”:“2.6.5”使其成为“mongoose”:“*”

然后在控制台(cd / home / yourusername / authentication)

键入“npm uninstall mongoose”,然后input“npm install mongoose”

似乎mongoose2.6.5是不赞成使用蒙哥拉的版本

更多信息: http : //digiscape.co.uk/blog/tips/node/unspecified-error-event-not-authorized-for-query-on-db-system-indexes-at-model-js55431/

我也有这个问题,首先使用蒙古。 即使你有一个mongolab用户,你也必须在用户标签下创build一个数据库用户

好吧,我认为它更多的是最新版本的问题,根据网站,最新版本是第3版。我想所有的免费计划现在支持这个版本,老版本不再支持。

要解决这个问题,请安装一个新的驱动程序:在您的工作authentication目录中运行命令:

 $ npm install mongoose 

$ node app重新启动你的应用后,一切都应该没问题。