2017-09-23 13 views
0

죄송합니다. 저는 일사천당합니다. 배관 할 때 어떻게 할 수 있습니까? response.statusCode?NodeJS Request : 파이핑 할 때`response.statusCode`를 얻으려면 어떻게해야합니까?

var express = require('express'); 
var path = require('path'); 
var request = require('request'); 
var fs = require('fs'); 
var app = express(); 
var port = 8000; 

var destination = fs.createWriteStream('./downloads/google.html'); 
var url = "http://www.google.com/"; 
request(url).pipe(destination) 
.on("finish", function() { 
    console.log("done"); 
    console.log(response.statusCode); // <<<<<<<<<<<<<<<<<<<<<<<<<<<< this 
}) 
.on("error", function(err){ 
    console.log(err); 
}); 

app.listen(port, function(){ 
console.log('running server on ' + port); 
}); 

답변

1

당신은 request에서 response 이벤트를 잡을 필요가있다. 파이프의 finished 이벤트에 포함되지 않습니다. 파이프 앞에 오류를 잡는 것도 고려해야합니다. 여기서 네트워크 오류를 발견하게됩니다. 파이프가 지나면 파일 오류를 잡아낼 수 있습니다.

request(url) 
.on('response', function(response) { 
    console.log(response.statusCode) // <--- Here 200 
}) 
.on("error", function(err){ 
    console.log("Problem reaching URL: ", err); 
}) 
.pipe(destination) 
.on("finish", function(response) { 
    console.log("done"); 
}) 
.on("error", function(err){ 
    console.log("Problem writing file: ", err); 
});