Node.js 中的 Util.inspect() 函数

2025年5月8日 | 阅读 4 分钟

调试设备源于 “util” 模块,包含 “软件” 功能。我们需要通过“require('util')”来调用这些功能,才能访问它们。util 模块的一个内置应用程序编程接口 (API)util.inspect()(在 v0.3.0 中添加)生成对象的文本表示形式,用于调试。util.inspect() 函数没有程序依赖性。可以提供额外的参数(例如 showHidden 和 depth)来修改输出,但输出随时可能发生变化。因此,我们可以为检查的值创建一个标识标签。它使用构造函数调用或 @@toStringTag。

语法

它具有以下语法:

规范

以下定义了参数

  • Object: 输入是一个对象或 JavaScript 原始类型。
  • Show hidden: 默认设置为 false。如果此选项为 true,则格式化结果中包含非可枚举的符号和属性。此外,还包括 WeakMap 和 WeakSet。
  • Depth: 它表示将用于格式化项目的迭代次数。
  • Colors: 如果此值设置为 true,输出将使用 ANSI 颜色代码进行样式设置。我们可以更改传输的颜色。
  • customInspect: 如果此值设置为 false,则不调用任何函数。
  • If set to true, showProxy: Proxy 检查包含目标和处理程序对象。默认值为“False”。
  • maxArrayLength: 此变量表示数组的最大数量。
  • maxStringLength: 当此项指示格式设置时使用的最大字符数。要显示所有项目,这些值设置为 null 或无穷大。
  • breakLength: 它是输入被分成多行的值。
  • CompactCompact: 长度大于 breakLength 的文本中的新行将导致此输入中断。
  • Sorted: 如果设置为 true,则 map 和 set 中的每个条目以及对象都会被排序。
  • Getters: 为了确定这些值是否设置为 true,会检查 getter。

util.inspect() 函数返回一个用于调试的对象字符串表示。从程序上讲,不建议依赖 util.inspect() 的输出,因为它随时可能发生变化。如果传递了更多选项,结果也可能发生变化。util.inspect() 将使用构造函数的调用和 @@toStringTag 来为被检查的项目创建标识标签。

示例

输出

Util.inspect() function in Node.js

使用引用索引,循环引用将读者指向其锚点


Util.inspect() function in Node.js

以下示例检查了 util 对象的所有属性


Util.inspect() function in Node.js

以下示例显示了 compact 选项的影响

优点

Node.js 中 util.inspect() 函数的几个优点如下:

  • 更强的调试能力: util.inspect() 的主要优势在于,它可以轻松、完整地立即暴露对象——包括嵌套的对象。它允许开发者一目了然地查看对象的完整结构,这对于排除复杂系统的故障非常有帮助。
  • 可读的输出: util.inspect() 函数生成的字符串比默认的 JSON.stringify() 方法更易于人类阅读,后者对于相当嵌套的对象可能导致难以阅读的输出。通过启用强度调整和颜色等功能,我们可以进一步提高其可读性。
  • 可定制性: 开发者可以通过提供各种输出自定义选项(包括 show hidden、depth、colors 等)来修改检查过程以适应他们的需求。这种灵活性确保了结果与使用它的情况相关,并且也很有用。util.inspect() 支持自定义检查逻辑,我们可以通过它使对象具有自己的检查方法。因此,对象在检查过程中拥有更多具有上下文相关性和上下文感知的统计信息,因为它们可以选择它们如何被表示。

应用

  • Node.js 交互式 REPL 设置: 此函数改进了在交互式 Node.js REPL 环境中可检查对象的输出,从而方便开发者探索和理解复杂对象。开发者还可以通过创建与工作流集成的自定义调试工具来获得更强的对象检查能力,以提高调试效率。这些工具使用 util.inspect()。
  • 配置管理: 为了确保具有复杂配置的应用程序中的配置项成功加载,并减少误配置的风险,util.inspect() 会记录并评估配置项。
  • 命令行界面 (CLI) 包: 为了提高用户友好性和调试能力,util.inspect() 可用于提供有关内部状态或命令结果的全面信息。