我正在使用Vitest,在我的测试中,我想要控制台日志输出一些东西。但是如果我像这样记录:
console.log({ a: { b: { c: { d: { e: 1 } } } } });
我得到这样的输出:
{ a: { b: { c: [Object] } } }
console.dir()也是如此。是否有任何方法可以增加在Vitest对象记录的深度?我正在使用JSON.stringify()来解决它,但将其格式化为默认值会有所帮助。
您可以这样做,而不需要额外的库:
function logAllParameters(obj, prefix = '') {
for (let key in obj) {
if (typeof obj[key] === 'object') {
logAllParameters(obj[key], prefix + key + '.');
} else {
console.log(prefix + key + ':', obj[key]);
}
}
}
const obj = { a: { b: { c: { d: { e: 1 } } } } };
logAllParameters(obj);
从这个问题:
使用250R回答:
您需要使用
util.inspect()
:const util = require('util') console.log(util.inspect(myObject, {showHidden: false, depth: null, colors: true})) // alternative shortcut console.log(util.inspect(myObject, false, null, true /* enable colors */))
输出:
{ a: 'a', b: { c: 'c', d: { e: 'e', f: { g: 'g', h: { i: 'i' } } } } }
或者你可以在那个问题页找到做同样事情的其他方法;你可以挑你觉得舒服的。
但如果我是你,我会选择:
console.dir(myObject, { depth: null });
因为:
console
的内置功能,所以不需要依赖。- 支持彩色化。
- 无硬编码函数