我正在编写我的第一个NodeJS应用程序,但由于某种原因,它在短时间内似乎会意外死亡。我不知道是什么原因导致的。该进程运行良好,甚至按预期工作,然后由于某种原因它就停止了。nohup日志没有显示错误或任何反馈。
我尝试在调试模式下运行它,但情况相同,没有信息。跟踪也没有帮助。
我通过nohup运行进程:
nohup node app.js &
代码:
var http = require('http');
var server = http.createServer().listen(8000);
var io = require('socket.io').listen(server);
var cookie_reader = require('cookie');
var querystring = require('querystring');
// Store the session cookie set by Django
io.configure(function(){
io.set('authorization', function(data, accept){
if(data.headers.cookie){
data.cookie = cookie_reader.parse(data.headers.cookie);
return accept(null, true);
}
return accept('error', false);
});
io.set('log level', 1);
});
io.sockets.on('connection', function (socket) {
socket.on('shoutbox_send', function(message){
values = querystring.stringify({
comment: message,
sessionid: socket.handshake.cookie['sessionid'],
});
try {
var options = {
host: 'www.example.com',
port: 80,
path: '/shoutbox/node_api',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': values.length
}
};
var req = http.get(options, function(res){
res.setEncoding('utf8');
res.on('data', function(message){
socket.emit('shoutbox_receive', message);
socket.broadcast.emit('shoutbox_receive', message);
});
});
req.write(values);
req.end();
} catch (err) {
console.log(err);
socket.emit('shoutbox_receive', err);
}
});
});
提前感谢您,
nohup.out
显示了什么?你的应用程序在被杀死之前需要多长时间? - user568109screen
代替nohup。screen
从shell中运行,只需输入screen
即可。然后你就进入了一个新的shell,除了终端输出以一种可能有用的方式被重定向之外。你可以使用Control A Control D分离屏幕,而其中运行的进程仍在继续,并且有一个虚拟终端来打印错误或信息。稍后你可以使用screen -R
从不同的会话重新连接。 - Paul