2017-09-23 36 views
0

对不起,我有点迷路。我怎样才能console.log response.statusCode管道?NodeJS请求:如何在管道连接时获取`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); 
}); 
相关问题