Javascript 获取循环中URL的主机名-Nodejs
因此,我目前正在尝试制作一个http状态代码检查器。但由于某些原因,响应主机名返回未定义,但我可以检索响应状态代码。我抓到它了吗Javascript 获取循环中URL的主机名-Nodejs,javascript,node.js,httpresponse,hostname,http-response-codes,Javascript,Node.js,Httpresponse,Hostname,Http Response Codes,因此,我目前正在尝试制作一个http状态代码检查器。但由于某些原因,响应主机名返回未定义,但我可以检索响应状态代码。我抓到它了吗 var fs = require('fs'); var http = require('http'); var stdin = process.openStdin(); stdin.addListener('data', function (userInput) { var urlListPath = userInput.toString().trim();
var fs = require('fs');
var http = require('http');
var stdin = process.openStdin();
stdin.addListener('data', function (userInput) {
var urlListPath = userInput.toString().trim();
fs.readFile(urlListPath, function (err, data) {
if (err) {
return console.log(err);
}
var urlArray = data.toString().split("\n");
urlArray = urlArray.filter(Boolean);
for (var i = 0; i < urlArray.length; i++){
http.get({hostname: urlArray[i]}, function(res){
console.log(res.hostname + ' | ' + res.statusCode + ' | ' + res.statusMessage);
});
}
});
});
按照@bluesman的建议,通过在函数中换行来解决:
var fs = require('fs');
var http = require('http');
var stdin = process.openStdin();
stdin.addListener('data', function (userInput) {
var urlListPath = userInput.toString().trim();
fs.readFile(urlListPath, function (err, data) {
if (err) {
return console.log(err);
}
var urlArray = data.toString().split("\n");
urlArray = urlArray.filter(Boolean);
for (var i = 0; i < urlArray.length; i++){
getHttpInfo(urlArray[i]);
}
});
});
function getHttpInfo(url){
http.get({hostname: url}, function(res){
console.log(url + ' : ' + res.statusCode + ' | ' + res.statusMessage);
});
}
把它放在一个以url为参数的函数中。。。为什么会有不同?每次迭代都会得到一个传递给http.get的新对象,并且每次迭代都会将值从数组复制到所述对象,啊,我明白了,你不再从res获取主机,而是从原始对象获取主机。所以你只是解决了这个问题,这是可以接受的。