搜索

首页  >  问答  >  正文

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

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

世界只因有你世界只因有你2755 天前883

全部回复(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
  • 取消回复