您的位置:首页技术文章
文章详情页

node.js - nodejs中把热request保存下来,使用JSON.stringify(req)报错,请问怎么解决?

【字号: 日期:2024-07-19 08:00:19浏览:37作者:猪猪

问题描述

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]了.

node.js - nodejs中把热request保存下来,使用JSON.stringify(req)报错,请问怎么解决?

求大神帮我看看, 这个是那里出了问题?

问题解答

回答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文件