节点JS进程崩溃没有错误logging

我试图运行一个非常简单的实现使用Express服务EJS内容的节点JS服务器。 当我启动服务器,它运行得很好,但一段时间后意外崩溃。 有时会在半小时内崩溃,而其他时间则会一次停留4-6小时。

我似乎无法确定错误的来源,因为我的日志不包含任何堆栈跟踪。

我已经采取了这个答案的build议 ,我有这个:

process.on('uncaughtException', function (exception) { console.log(exception); // to see your exception details in the console }); 

我也重载了console方法来login到一个文件,如下所示:

 console.log = function(d) { log(d); }; console.error = function(d) { log(d); }; function log(message) { log_file.write(util.format(message) + '\n'); log_stdout.write(util.format(message) + '\n'); } 

不过,服务器崩溃而不报告任何东西。 我也试图创build一个节点domain

 var domain = require('domain'); var d = domain.create(); d.on('error', function(err) { console.error(err); }); 

如果我不得不猜测,我会想象这个错误可能是由于内存不足造成的,因为我在Raspberry Pi B版本2上运行了所有这些,但是我无法确定。 如果真的是内存不足,我希望看到:

致命错误:JS分配失败 – 进程内存不足

报告在我的日志某处。

我的服务器本身其实很简单:

 // Create Express and set up the EJS view engine var app = express(); app.set('view engine', 'ejs'); app.use("/resources", express.static(__dirname + "/resources")); // Setup the index page view app.get('/', function(req, res) { console.log(getFormattedDate() + req.method + " " + req.url + " by " + req.connection.remoteAddress); res.render('pages/index', { title: "James Taylor", content: formattedContent }); }); app.get('*', function(req, res, next) { var err = new Error(); err.status = 404; next(err); }); app.use(function(err, req, res, next) { if (err.status == 404) { console.error(getFormattedDate() + err + req.url); res.set("Content-Type", "text/plain"); res.status(err.status); res.send(err.message); } else { console.error(err); return next(); } }); 

与此同时,我已经能够解决这个问题, 永远使用,这似乎很好地工作。

我很感激你可以给任何build议,以解决这个问题。 我不得不把所有这些基础设施都包含在一个永久崩溃的服务器中。