2016-11-18 97 views
0

我試圖用Node.js來抓取一個網頁的內容,並將它與我存儲爲一個文件的同一頁的副本進行比較,如下所示:request()和fs.createReadStream()不返回「正確的」值

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」,就好像我從服務器獲取的響應一直在變化,或者節點不知道什麼==意味着什麼。

回答

1

fs.createReadStream(存檔[0])返回一個流,而不是內容

使用流事件來檢索內容,readStream.on( '開放', '數據',等等

或者只是使用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 
     .... 
});