为什么express会出现这么奇葩的循环引用问题?

苦逼码农 2017-10-09 06:38:22
问题1:



// 一个中间件栈,处理指向 /user/:id 的 GET 请求
router.get('/xy', function (req, res, next) {
console.log('--------------');
//console.log(JSON.stringify(req)); //为什么这个不行?
console.log(util.inspect(req, {depth: null}))

}, function (req, res, next) {
// 渲染常规页面
console.log("xxxxx");
// res.render('regular');

next();
});

console.log(JSON.stringify(req));

这一句打印的时候,会提示: Converting circular structure to JSON。

因此我上网查了一下,什么叫循环引用,看个例子:
http://blog.csdn.net/isaisai/article/details/51818766

var util = require("util")
var a = {};
a.b = a;
a.c = "123";
// console.log(JSON.stringify(a)); // 报错
console.log(util.inspect(a,{depth:null})); //depth:null 展开全部层级

————————————————————分割线——————————————————

以上叫循环引用,因此我立即把req重新命名,命名成:req1, 结果依然不奏效。


于是我只好采用util.inspect 来解决这个问题了。


第2个问题: 为什么console.log(req)又可以呢?


按道理说, js的对象也是json格式的(当然可以包含函数) ,因此console.log一个对象的时候,

内部的操作应该和util.inspect 差不多才对吧?



...全文
110 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35181646 2017-10-10
  • 打赏
  • 举报
回复
express是什么鬼

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧