【问题标题】:NodeJS Request: How do I get `response.statusCode` when piping?NodeJS请求:管道时如何获得`response.statusCode`?
【发布时间】:2017-09-23 15:56:56
【问题描述】:

对不起,伙计们,我有点迷路了。管道时如何 console.log 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);
});

【问题讨论】:

    标签: node.js express node-request


    【解决方案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);
    });
    

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多