当JSON.stringify抛出错误时,循环引用的确切位置是什么?

时间:2014-04-17 15:10:05

标签: javascript json node.js pug circular-reference

将对象传递给JSON.stringify会引发错误“将循环结构转换为JSON”,但我不确定原因。

我通过服务器端node.js传递对象

app.get('/', function(req,res){
    res.render('index.jade', {object: object});
});

到Jade

script var table = !{JSON.stringify(object)};

当Jade试图解析object时,它会抛出错误。

但我没有理由相信object有循环引用。事实上,我做了一个

console.info(JSON.stringify(req.user.table.export))

res.render之前,它工作正常!

有没有办法确切地知道循环引用的位置?

修改 found something,但遗憾的是can't use it in Jade

edit2 actually can

1 个答案:

答案 0 :(得分:0)

在玉器中

- var cache = [];
script var table = !{JSON.stringify(table,function(key, value) {if (typeof value === 'object' && value !== null) {if (cache.indexOf(value) !== -1) {console.log('Found Circular reference: '+key);return;}cache.push(value);}return value;})};
- cache = null;

输出

  

{"玩家":[{" ID":" 53179fd401d540b8c5000001""用户名":...
  发现循环参考:表
  不推荐使用connections属性。使用getConnections()m
  找到循环参考:所有者
  找到循环参考:
  找到圆形参考:插座
  找到循环参考:商店
  发现循环参考:经理
  发现循环参考:经理
  发现循环参考:mime
  发现循环参考:mime
  发现循环参考:mime
  发现循环参考:mime
  找到循环参考:用户
  找到循环参考:用户
  找到循环引用:_idleNext
  找到循环参考:_idlePrev
  找到循环引用:_idleNext
  找到循环参考:j1sYyxSoI8LEw5DNYGUa
  发现循环参考:经理
  找到循环参考:商店
  找到循环参考:表

source

不知道为什么它会发生......(link to issue on /Jade github