NodeBB crash when using with mongoDB

Bug Reports
  • 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

  • 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

  • @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