有什么办法可以让util.inspect的string不换行
发布于 10 年前 作者 yuyue007 5572 次浏览 最后一次编辑是 8 年前

如果需要inspect的对象比较大,最终在输出的对象会换行,有没有办法让结果都在一行(去掉换行符?)显示?

8 回复

options 可以自定义

http://nodejs.org/api/util.html#util_util_inspect_object_options

我没有找到~ 有点怀疑是showHidden ,但是true,false都试过了,还是不行。 我用的参数是 require(‘util’).inspect(object, { showHidden: false, depth: 3 })

自定义inspect方法,试试

customInspect 那就要自己写string,主要的是我要输出的那个object是第三方库里面的。没法使用customInspect

require('util').inspect({p:process}).replace(/\n/g, '')

这样可以的~

@cfddream options 里面的参数也不能够自定义的 util 模块做最后拼接的时候会调这个函数

function reduceToSingleString(output, base, braces) {
  var length = output.reduce(function(prev, cur) {
    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
  }, 0);

  if (length > 60) {
    return braces[0] +
           (base === '' ? '' : base + '\n ') +
           ' ' +
           output.join(',\n  ') +
           ' ' +
           braces[1];
  }

  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
}

结果默认只要字符串长度大于60的都加上换行缩进 这就真蛋碎了,看来只能用正则替换,但又不太想这么干,内核帮你加一次你又删一次…… 就不知道为啥不在参数里面再给个类似 JSON.stringify 的格式化选项……

inspect本来就是输出方便人看的。。。

回到顶部