NodeBB crash when using with mongoDB


  • Hello,

    I have come to a dead end with this problem, as soon as I start nodeBB, it crashes with this error :

    TypeError: undefined is not a function
        at Object.Notifications.init (D:\nuitInfo2013\forum\src\notifications.js:15:38)
        at D:\nuitInfo2013\forum\app.js:126:21
        at D:\nuitInfo2013\forum\src\upgrade.js:26:4
        at D:\nuitInfo2013\forum\src\database\mongo.js:309:4
        at D:\nuitInfo2013\forum\src\database\mongo.js:342:4
        at D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\collection\query.js:147:5
        at Cursor.nextObject (D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\cursor.js:733:5)
        at commandHandler (D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\cursor.js:713:14)
        at D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\db.js:1806:9
        at Server.Base._callHandler (D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\connection\base.js:442:41)
    

    I am on Windows which may be one part of the problem.
    Waiting for your answers, Best Regards,
    Azgarreth

  • GNU/Linux Admin

    Hey @Azgarreth -- I can't say I've ever come across this problem... perhaps some of the files were not correctly cloned into your working directory. Can you try deleting D:\nuitInfo2013\forum and running git clone again? Let me know if there are any warnings or errors.


  • I just deleted and cloned nodeBB again. I went through the installing process, I had one more step this time, it asked me to setup a new user for mongoDB since the install is fresh as well. It installed all schemas (I have done this the first time with --upgrade). I started nodeBB, and got the exact same error sadly.
    Node version : 0.10.22 (x64)
    MongoDB version : 2.4.8

    Thank you for your time,
    Azgarreth

  • GNU/Linux Admin

    @Azgarreth No clue why this would happen on your install 馃槥

    Can you add this line to \src\notifications.js, on line 14, right before the line that reads new cron?

    console.log('Notif Obj', Notifications.prune);
    

    ... then save, try running NodeBB again, and let me know what shows up right before the error.


  • Here is the full log :

    Notif Obj function (cutoff) {
    		if (process.env.NODE_ENV === 'development') {
    					winston.info('[notifications.prune] Removing expired notifications from the database.');
    			}
    			var     today = new Date(),
    					numPruned = 0;
    			if (!cutoff) {
    					cutoff = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
    			}
    			var     cutoffTime = cutoff.getTime();
    			async.parallel({
    					"inboxes": function(next) {
    							db.getSortedSetRange('users:joindate', 0, -1, function(err, uids) {
    									if(err) {
    											return next(err);
    									}
    									uids = uids.map(function(uid) {
    											return 'uid:' + uid + ':notifications:unread';
    										});
    									next(null, uids);
    							});
    					},
    					"expiredNids": function(next) {
    							db.getSetMembers('notifications', function(err,nids) {
    									async.filter(nids, function(nid, next) {
    											db.getObjectField('notifications:' + nid, 'datetime', function(err, datetime) {
    													if (parseInt(datetime, 10) < cutoffTime) {
    															next(true);
    													} else {
    															next(false);
    													}
    											});
    									}, function(expiredNids) {
    											next(null, expiredNids);
    									});
    							});
    					}
    			}, function(err, results) {
    					if(err) {
    							if (process.env.NODE_ENV === 'development') {
    									winston.error('[notifications.prune] Ran into trouble pruning expired notifications. Stack trace to follow.');
    									winston.error(err.stack);
    							}
    							return;
    					}
    					async.eachSeries(results.expiredNids, function(nid, next) {
    							db.sortedSetsScore(results.inboxes, nid, function(err, results) {
    									if(err) {
    											return next(err);
    									}
    									// If the notification is not present in any inbox, delete it altogether
    									var     expired = results.every(function(present) {
    													return present === null;
    											});
    									if (expired) {
    											destroy(nid);
    											numPruned++;
    									}
    									next();
    							});
    					}, function(err) {
    							if (process.env.NODE_ENV === 'development') {
    									winston.info('[notifications.prune] Notification pruning completed. ' + numPruned + ' expired notification' + (numPruned !== 1 ? 's' : '') + ' removed.');
    							}
    					});
    			});
    		}
    D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\connection\base.js:242
    		throw message;
    			^
    TypeError: undefined is not a function
    	at Object.Notifications.init (D:\nuitInfo2013\forum\src\notifications.js:16:38)
    	at D:\nuitInfo2013\forum\app.js:126:21
    	at D:\nuitInfo2013\forum\src\upgrade.js:26:4
    	at D:\nuitInfo2013\forum\src\database\mongo.js:309:4
    	at D:\nuitInfo2013\forum\src\database\mongo.js:342:4
    	at D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\collection\query.js:147:5
    	at Cursor.nextObject (D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\cursor.js:733:5)
    	at commandHandler (D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\cursor.js:713:14)
    	at D:\nuitInfo2013\forum\node_modules\mongodb\lib\mongodb\db.js:1806:9
    	at Server.Base._callHandler (D:\nuitInfo2013\forum\node_modules\mongodb\lib\
    mongodb\connection\base.js:442:41)
    

Suggested Topics

| | | |