在api js附近,视图协定方法调用给出:TypeError:JSON.stringify无法序列化循环结构



每当我使用near-cli调用我的合同view方法时,它都能正常工作,终端会以JSON格式正确输出结果。

但当我在我的角度项目中使用near-api-js方法调用相同的方法时,它会给出一个错误:

Error: Uncaught (in promise): TypeError: JSON.stringify cannot serialize cyclic structures.

near-cli的输出供参考,也是我通过near-api-js:调用相同方法时的预期输出

{
files: [
{
owner: 'some string',
key: 'some string',
cid: 'some string'
}
],
length: 1
}

造成这种情况的原因是什么?解决方案是什么?

循环参考示例:

var circularReference = {otherData: 123};
circularReference.myself = circularReference;
JSON.stringify(circularReference);

说明:circularReference通过cirularReference.myself表示自身。

Mozilla的网站上有一个很好的例子,说明如何找到和删除循环引用:

const getCircularReplacer = () => {
const seen = new WeakSet();
return (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) {
return;
}
seen.add(value);
}
return value;
};
};
JSON.stringify(circularReference, getCircularReplacer());
// {"otherData":123}

你可以修改它,而不是删除循环引用

然而,这是一种症状性治疗。最好的办法是首先找出循环引用出现的原因,如果这是由错误引起的,那么就修复它

相关内容

  • 没有找到相关文章

最新更新