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]了.
求大神幫我看看, 這個是那里出了問題?
問題解答
回答1:req是無法json序列化的,想看里面有什么除了console就只能是debug
回答2:req中存在循環引用的字段,所以無法stringify。舉個例子let a = {}let b = {a}a.b = bJSON.stringify(a) //TypeError: Converting circular structure to JSONa.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>
回答3:想要在文件中看 req 很簡單。
router.post('/login', function(req, res, next) { console.log(req);});
壓根兒就不需要自己進行文件寫入的操作,直接命令行輸入 node app.js > ./a.log , req的所有內容就會寫入到當前工作目錄的 a.log 這個文件中,注意把 app.js 換成你要運行的js文件
