附加到JSON会导致错误

时间:2017-02-20 02:22:44

标签: javascript json node.js

我正在尝试将setInterval函数的ID附加到JSON文件中,但它会出现错误TypeError: Converting circular structure to JSON

我的代码看起来像这样

var clearID = setInterval(function(){
   //do stuff
},(60)*1000);

fs.readFile('path', 'utf8', function readFileCallback(err, data){
   if (err) return console.log(err);   
     var doc = JSON.parse(data);
     doc.IDs.shift();
     doc.IDs.push(clearID);
     var saved = JSON.stringify(doc);
  fs.writeFile('path', saved, 'utf8', (err)=>{
    if(err) return console.log(err);
  });
});

我应该更改什么来阻止此错误?

1 个答案:

答案 0 :(得分:0)

在NodeJS环境中,您无法将setInterval调用的返回值转换为JSON字符串。您得到的错误非常明确,返回值包含一个或多个循环引用。

试试这个(在节点环境中):

var x = setInterval(function() { },100);
console.log(x); 

参见循环参考?它们显示为[Circular]

在浏览器环境中,您将获得从setTimeoutsetInterval返回的数字,而不是在节点中执行这些函数的情况。

NodeJS timers documentation

Browser timers documentation (e.g. setTimeout)