停止仅使用 console.log 并使用内置节点调试器

2025-05-25

停止仅使用 console.log 并使用内置节点调试器

有趣的事实您不一定非要使用 console.log 来调试您的应用程序,node 有一个可与 DevTools 配合使用的内置调试器。

很棒的是,这个功能从 Node 6.3 就出现了(四年前!)。在此之前,有一个包可以让你做同样的事情。即便如此,你仍然可以像许多其他语言一样使用基于控制台的调试器。我将向你展示如何使用这两种调试器。

与……一起奔跑--inspect

您可以使用以下标志运行任何节点脚本。

node --inspect index.js

但是,如果您像我一样,您的设置可能更复杂,涉及gulp其他一些会 fork 多个进程的系统。当您运行nodemonwith--inspect=5858并且您的进程最终 fork 时,端口将逐一递增。如果发生这种情况,并且您的调试端口为 ,5858那么其他进程的调试端口将为58595860等等。

Chrome 检查器

打开 Chrome chrome://inspect,您可能会注意到以下链接:

Open dedicated DevTools for Node

点击该链接,您将看到一个 DevTools 检查器。您只需转到“连接”选项卡,并将各种调试端口添加到连接列表中即可。对我来说,这些端口是localhost:5858, localhost:5859, localhost:5860, 'localhost:5861', localhost:5862

DevTools 连接

完成后,就可以开始了。你可能会注意到终端里已经连接了一个调试器。

Chrome 节点检查器

特征

节点检查器的优点在于它具有许多功能:

  • 断点调试、单步调试和黑盒调试
  • 转译代码的源映射
  • 带热点评估的 LiveEdit
  • 控制台评估
  • 分析和采样
  • 堆快照、分配、内存分析
  • 异步堆栈/承诺

就这样!

额外奖励如果您使用 ssh,当您尝试调试服务器上正在运行的某些东西时,您可以将调试转发到远程调试会话。

ssh -L 9221:localhost:9229 user@remote.example.com

欲了解更多详细信息,请查看文档指南

调试器命令行

如果你无法访问 chrome devtools,也无法进行任何 ssh 隧道连接,你也可以使用普通的命令行调试器。你只需要运行以下命令:

node inspect 127.0.0.1:5858

您还可以选择直接附加到进程 ID:

node inspect -p <process id>

命令行调试器

祝你好运!

如果您喜欢这篇文章,请随时关注并查看我关于 Node.js 生态系统中其他一些优秀工具的其他帖子,包括

如果您正在寻找有关 Linux 和网络诊断的文章,请查看:

谢谢!

也可以在这里、TwitterGitHub上关注我

文章来源:https://dev.to/nyxtom/stop-using-console-log-and-use-the-node-debugger-4402
PREV
如何制作有趣的软件项目演示文稿
NEXT
一篇博文涵盖所有 React Hooks 和概念!🤗 Ohk,但是 React 中的状态是什么? useState() useEffect() useContext() useReducer() useReducer() 和 useContext() useCallback() useMemo() useRef()