node.js - nodejs中把熱request保存下來,使用JSON.stringify(req)報錯,請問怎麼解決?
世界只因有你
世界只因有你 2017-05-16 13:20:56
0
3
869
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]了.

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

世界只因有你
世界只因有你

全部回覆(3)
为情所困

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

小葫芦

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>

滿天的星座

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!