【问题标题】:request() and fs.createReadStream() not returning the "right" valuesrequest() 和 fs.createReadStream() 没有返回“正确”的值
【发布时间】:2017-04-02 04:30:13
【问题描述】:

我正在尝试使用 Node.js 抓取网页的内容,并将其与我存储为文件的同一页面的副本进行比较,如下所示:

var fs = require("fs");
var request = require("request");
var archive = ["./archive.html", "http://praguerace.com/comic/archive"];

request(archive[1], //request Prague Race's archive
    function (error, response, body) {
        if (fs.createReadStream(archive[0]) == body) //if no change occurred
            console.log("checkpoint 1");
        else
            console.log("checkpoint 2");
    }
);

我已经(正确)安装了 Request 模块,并且没有使用 Express。

问题在于脚本一直在打印“检查点 2”,就好像我从我试图抓取的服务器获得的响应一直在变化,或者 Node 不知道 == 的含义。

【问题讨论】:

    标签: javascript arrays node.js request fs


    【解决方案1】:

    fs.createReadStream(archive[0]) 返回一个流而不是内容

    使用流事件检索内容,readStream.on('open', 'data', etc...

    或者只使用 readFile 或 readFileSync

    异步版本:

    request(archive[1], //request Prague Race's archive
    function (error, response, body) {
       fs.readFile(archive[0], "utf8", function(err, data){
         if(data  == body)
           ....
         else
            ....
        });
    });
    

    同步版本

    request(archive[1], //request Prague Race's archive
    function (error, response, body) {
         if(fs.readFileSync(archive[0], "utf8")  == body)
           ....
         else
            ....
    });
    

    【讨论】:

      猜你喜欢
      • 2014-11-26
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多