[Vue warn]: Error in nextTick: "TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Vue'
| property '$options' -> object with constructor 'Object'
| property 'router' -> object with constructor 'VueRouter'
--- property 'app' closes the circle"
一般报错
TypeError: Converting circular structure to JSON
是因为存在循环引用,并且使用
JSON.stringify
方法去转化成字符串
// 问题代码
const x = { a: 8 };
const b = { x };
b.y = b; // 循环引用
JSON.stringify(b); // 触发报错
// 解决问题代码
const x = { a: 8 };
const b = { x };
b.y = JSON.parse(JSON.stringify(b)); // 隐式深拷贝,主要实现深拷贝,解除循环引用
JSON.stringify(b);
// 也可以不使用深拷贝,直接去掉循环引用的代码,问题的关键点是解除循环引用
报错位置不能显式看到循环引用,因为循环引用的代码是Vue框架代码自己实现的,因此发现问题的产生地方更难一点。
产生问题的原因