2014-04-01 4 views
0

내 NodeJS 응용 프로그램이 충돌하는 것을 방지하고 도메인을 사용하여이를 수행하는 방법을 읽고 싶습니다. 나는 아직도 약간 혼란 스럽다.하지만 내가 설정 한 것을 따라 갔다. 이것이 올바르게 설정 되었습니까? 아무것도 바꾸어야합니까? 감사.노드를 올바르게 도메인을 설정합니까?

var express = require('express'); 
var http = require('http'); 
var path = require('path'); 
var d = require('domain').create(); 

var app = express(); 

app.configure(function() { 

    //set up express 
    app.set('port', process.env.PORT || 3000); 

    app.use(app.router); 
    app.use(function(req,res){ 
     res.redirect('/error'); 
    }); 

}); 


//launch 
d.on('error', function(er) { 
    console.log('Error!', er.message); 
}); 

d.run(function() { 
    http.createServer(app).listen(app.get('port'), function(){ 
     console.log('Express server listening on port ' + app.get('port')); 
    }); 
}); 

내 경로 파일 중 하나에서 오류가 발생하면 올바르게 작동하지만 오류가 기록되지 않습니다. 나중에 오류를 확인할 수 있도록 파일이나 다른 것으로 기록해야합니까?

답변

1

오류가 발생할 때마다 메모리 누수를 시작할 수 있기 때문에 노드 슨 문서에 따르면 나쁜 행동입니다. domain api docs page에 올바른 방법을 보여주는 예가 있습니다. 그러나 나는 왜 console.log가 작동하지 않는 지 잘 모르겠다. 로그 파일은 아마도 좋은 생각 일 것이다. 도메인의 API도 여전히 불안정하고 변경 될 수 있습니다.

즉, 예기치 않은 오류 (클러스터 모듈을 사용하여 문제가 발생하는 작업자를 시작하고 중지 할 때)가 발생하면 오류를 정상적으로 처리하고 새 작업자 프로세스를 시작해야합니다. 워드 프로세서

, 이것은 당신이있어 무엇을 당신이 일을하는지에 대단히 가까운 보이는, 어떻게해야 하지 :

// XXX WARNING! BAD IDEA! 

var d = require('domain').create(); 
d.on('error', function(er) { 
    // The error won't crash the process, but what it does is worse! 
    // Though we've prevented abrupt process restarting, we are leaking 
    // resources like crazy if this ever happens. 
    // This is no better than process.on('uncaughtException')! 
    console.log('error, but oh well', er.message); 
}); 
d.run(function() { 
    require('http').createServer(function(req, res) { 
    handleRequest(req, res); 
    }).listen(PORT); 
}); 
관련 문제