我目前正在处理一个项目,该项目基本上是一个用于与其他员工互动的实时留言板。
在基础知识已经开发之后,我已经完成了这一切,我对Node非常陌生,并且正在开发。
我们的服务器在随机时间意外退出而没有错误。它每天最多发生一次,有时服务器负载很小,有时服务器负载很重。
有一个未被捕获的例外的听众:
process.on('uncaughtException', function(err) {
// handle the error safely
console.log("Uncaught exception: "+err);
});
我们还会在控制台和日志文件中输出错误,但是在它退出之前都没有显示错误!
我们正在使用express和socket.io
任何帮助都将不胜感激。
这基本上就是我们在服务器中的代码。我正在记录我可以看到的所有不同进程,并且我根本没有收到任何错误消息,并且当执行不同的操作时,它似乎总是崩溃:
process.on('uncaughtException', function(err) {
// handle the error safely
console.log("Uncaught exception: "+err);
});
app.configure(function(){
app.use(express.cookieParser()); // Allow parsing of cookies
app.use(express.json()); // Support JSON parsng
app.use(express.urlencoded()); // Support URL encoded params
app.set('view engine', 'ejs'); // Define view engine as EJS
app.use(express.session({store: sessionStore, secret: sessSecret, key: sessKey}));
app.use(app.router); // Use routes
app.use("/public", express.static(__dirname + '/public')); // Define public directory
});
var server = https.createServer(options, app).listen(app_port, function(){
console.log("Express server listening on port " + app_port);
});
// Require our routes module
var routesModule = require('./modules/routes.js')(app);
var svc_io = require("/usr/lib/node_modules/socket.io/index.js")(https);
var dbmodule = require("./modules/db.js");
var moment = require('/usr/lib/node_modules/moment/moment.js');
var fs = require('/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js');
var util = require('util');
console.log = function(d){
var time = moment().format('DD-MMM-YYYY HH:mm:ss.SSS');
var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags: 'a'});
var log_stdout = process.stdout;
log_file.write(time + ' : ' + util.format(d) + '\n');
log_stdout.write(time + ' : ' + util.format(d) + '\n');
log_file.end();
};
var io = svc_io.listen(server);
var socketModule = require('./modules/socket.js')(app, io, sessionStore, cookieParser, sessKey, sessSecret);
答案 0 :(得分:0)
我想你需要对此进行评论,你会得到错误点。
// process.on('uncaughtException', function (err) {
// handle the error safely
//console.log("Uncaught exception: "+err);
// });
答案 1 :(得分:0)
万一这可以帮助其他人从Google提出这个问题:我有一台崩溃的Node.js服务器,根本没有任何错误,并且花了一个小时才意识到我的原因是在我的代码中写入类似writeFileSync("./foo.json", "…")
的文件,通常当然可以,但是这导致服务器“崩溃”,因为我使用PM2来“监视”服务器目录中的文件更改-即无论何时文件更改在服务器目录中,PM2重新启动服务器。我通过为watch_ignore
文件夹添加.data
配置并将foo.json
放在其中来解决了这个问题。