停止仅使用 console.log 并使用内置节点调试器
有趣的事实:您不一定非要使用 console.log 来调试您的应用程序,node 有一个可与 DevTools 配合使用的内置调试器。
很棒的是,这个功能从 Node 6.3 就出现了(四年前!)。在此之前,有一个包可以让你做同样的事情。即便如此,你仍然可以像许多其他语言一样使用基于控制台的调试器。我将向你展示如何使用这两种调试器。
与……一起奔跑--inspect
您可以使用以下标志运行任何节点脚本。
node --inspect index.js
但是,如果您像我一样,您的设置可能更复杂,涉及gulp
其他一些会 fork 多个进程的系统。当您运行nodemon
with--inspect=5858
并且您的进程最终 fork 时,端口将逐一递增。如果发生这种情况,并且您的调试端口为 ,5858
那么其他进程的调试端口将为5859
,5860
等等。
Chrome 检查器
打开 Chrome chrome://inspect
,您可能会注意到以下链接:
Open dedicated DevTools for Node
点击该链接,您将看到一个 DevTools 检查器。您只需转到“连接”选项卡,并将各种调试端口添加到连接列表中即可。对我来说,这些端口是localhost:5858
, localhost:5859
, localhost:5860
, 'localhost:5861', localhost:5862
。
完成后,就可以开始了。你可能会注意到终端里已经连接了一个调试器。
特征
节点检查器的优点在于它具有许多功能:
- 断点调试、单步调试和黑盒调试
- 转译代码的源映射
- 带热点评估的 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 和网络诊断的文章,请查看:
谢谢!
也可以在这里、Twitter和GitHub上关注我
文章来源:https://dev.to/nyxtom/stop-using-console-log-and-use-the-node-debugger-4402