搜尋

首頁  >  問答  >  主體

node.js - nodejs中把熱request保存下來,使用JSON.stringify(req)報錯,請問怎麼解決?

router.post("/login", function(req, res, next) {
    var file = "c:\a.txt"; 
    var str = JSON.stringify(req); 
    fs.appendFile(file, str, function(err){  
        if(err) {
            console.log(err);  
        } else {
            console.log("写入文件ok");  
        }
    }); 
});

初步學習nodejs,當一個請求過來的時候,我想看看這個requert中到底有多少東西,在控制台可以直接使用console打印出來,但是控制台太雞肋,我就想保存到記事本中在用本地的ide打開看,結果在JSON.stringify(req) 這裡就報錯了。

我這裡 把 var str = req; 這個也不行,換成這個 保存在txt中的就是 [object Object]了.

#求大神幫我看看, 這個是那裡出了問題?

世界只因有你世界只因有你2753 天前879

全部回覆(3)我來回復

  • 为情所困

    为情所困2017-05-16 13:22:56

    req是無法json序列化的,想看裡面有什麼除了console就只能是debug

    回覆
    0
  • 高洛峰

    高洛峰2017-05-16 13:22:56

    req中存在循環引用的字段,所以無法stringify。舉個例子

    let a = {}
    let b = {a}
    a.b = b
    JSON.stringify(a) //TypeError: Converting circular structure to JSON
    a.toString() //[Object Object]

    如果你想查看req,可以透過調試來查看

    router.post("/login", function(req, res, next) {
        var file = "c:\a.txt"; 
        var str = JSON.stringify(req); 
        debugger; //断点
        res.end('')
    });

    命令列調試
    node debug <main.js>

    chrome調試
    node --inspect <main.js>

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:22:56

    想要在文件中看 req 很簡單。

    router.post("/login", function(req, res, next) {
        console.log(req);
    });

    壓根兒就不需要自己進行文件寫入的操作,直接命令列輸入 node app.js > ./a.log , req的所有內容就會寫入到當前工作目錄的a.log 這個文件中,注意把app.js 換成你要運行的js檔

    回覆
    0
  • 取消回覆