Javascript Node.js:如何在发生错误事件时处理域模块中的请求对象
我有一些由域模块包装的http服务器。 服务器在某些请求上发送错误。是否有任何方法可以获取引发错误的请求对象Javascript Node.js:如何在发生错误事件时处理域模块中的请求对象,javascript,node.js,Javascript,Node.js,我有一些由域模块包装的http服务器。 服务器在某些请求上发送错误。是否有任何方法可以获取引发错误的请求对象 var http = require('http'); var domain = require('domain'); var d = domain.create(); d.on('error', function(err) { console.error("Sorry, dude, we have a problem"); console.error(err.stack
var http = require('http');
var domain = require('domain');
var d = domain.create();
d.on('error', function(err) {
console.error("Sorry, dude, we have a problem");
console.error(err.stack);
});
d.run(function() {
http.createServer(function(req, res) {
someBadFunction();
res.end();
}).listen(8080);
}
);
您可以将请求添加到域中,并在错误处理程序中将其过滤掉:
d.on('error', function(err) {
var req = d.members.filter(function(member) {
return member instanceof http.IncomingMessage;
})[0];
d.remove(req);
...
});
d.run(function() {
http.createServer(function(req, res) {
d.add(req);
someBadFunction();
res.end();
}).listen(8080);
});
但是,如果我要使用域(它们已被弃用),我会为每个请求创建一个新域(按照),而不是将每个请求添加到顶级域,因为我认为上面的代码无法正常处理任何合理数量的请求。您可以将请求添加到域,并在错误处理程序中将其过滤掉:
d.on('error', function(err) {
var req = d.members.filter(function(member) {
return member instanceof http.IncomingMessage;
})[0];
d.remove(req);
...
});
d.run(function() {
http.createServer(function(req, res) {
d.add(req);
someBadFunction();
res.end();
}).listen(8080);
});
但是,如果我要使用域(它们已被弃用),我会为每个请求创建一个新域(按照),而不是将每个请求添加到顶级域,因为我认为上面的代码无法正常工作,任何合理数量的请求都会传入。您是说如果在
createServer
回调中抛出异常,您的域不会捕获错误吗?这里真的没有太多信息可供讨论……@James,域捕获错误,一切正常,但我需要知道请求参数以获取更多信息。你是说如果在createServer
回调中抛出异常,你的域不会捕获错误吗?这里真的没有太多信息可供讨论……@James,域捕获错误,一切正常,但我需要知道请求参数以获取更多信息。谢谢,@robertklep,这正是我想要的。谢谢,@robertklep,这正是我想要的。