Node.js 检查URL是否会导致getaddrinfo错误
有没有办法检查在发出请求时,任何给定地址是否会导致getaddrinfo错误?我有一个URL列表,其中一些会导致getaddrinfo错误和Node.js应用程序崩溃。所以我想在调用请求方法之前检查地址是否可以解析。我一直在尝试在请求的回调函数中捕获该错误,但没有任何运气。谢谢 这是我的尝试- ref=这个Node.js 检查URL是否会导致getaddrinfo错误,node.js,request,Node.js,Request,有没有办法检查在发出请求时,任何给定地址是否会导致getaddrinfo错误?我有一个URL列表,其中一些会导致getaddrinfo错误和Node.js应用程序崩溃。所以我想在调用请求方法之前检查地址是否可以解析。我一直在尝试在请求的回调函数中捕获该错误,但没有任何运气。谢谢 这是我的尝试- ref=这个 var options = { host: ref.host, headers: { 'user-agent': 'Mozilla/5.0'
var options = {
host: ref.host,
headers: {
'user-agent': 'Mozilla/5.0'
},
path: ref.pathname,
method: "GET",
timeout: 5000,
followRedirect: true,
maxRedirects: 5
};
// Process the file.
var file = fs.createWriteStream(path.normalize(ref.saveTo + ref.name + ref.extension));
var req = ref.protocol.get(options, function(res) {
res.on('data', function(data) {
f.write(data);
}).on('end', function() {
f.end();
});
});
req.on('response', function(err) {
if(err.statusCode == '404') {
console.log("Response ", err);
}
});
req.on('error', function(err) {
console.log("This is error ----" + err);
});
req.end();
编辑:这是我从Node.js得到的错误-
错误:getaddrinfo ENOTFOUND
在errnoException dns.js:37:11
在Object.onanswer[as oncomplete]dns.js:124:16上,您可以捕捉到一个服务器上的错误事件。例如:
var doGETRequest = require("http").get;
var req = doGETRequest("http://foo.bar", function(res) { });
req.on("error", function errorHandler(err) {
if(err.code === "ENOTFOUND") {
console.log("Address not found.", e);
} else {
console.log("Some other error:", e);
}
});
之所以使用事件而不是异常,是因为主机名查找是异步的。不知道为什么他们不把它作为第一个参数传递给回调,但事情就是这样 我已经试过了。出于某种原因,应用程序无论如何都会崩溃。我在帖子中添加了我的代码。我以你添加的示例为例,在修复了一些缺失的变量后运行它。错误处理程序会记录错误,但应用程序不会崩溃。您是否收到未处理的异常?完整的错误是什么?您正在运行node的最新版本吗?