node.js - nodejs中把热request保存下来,使用JSON.stringify(req)报错,请问怎么解决?
世界只因有你
世界只因有你 2017-05-16 13:20:56
0
3
870
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学习者快速成长!