在运行节点应用程序时未捕获,未指定“错误”
我是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
重新启动你的应用后,一切都应该没问题。