本文介绍如何使用最新的Google Chrome DevTools高效地调试Node.js程序。请继续阅读,并阅读关于Chrome DevTools的节点。
调试是识别和消除软件应用程序中的错误的任务,它不仅仅是在代码中打印出值。本文介绍如何使用最新的Google Chrome DevTools高效地调试Node.js程序。
许多开发人员使用console.log来调试他们的应用程序。但为什么?答案很简单:如果你没有正确设置你的环境,使用调试器很不方便。
为什么console.log不是最好的选择
使用console.log来调试你的代码通常会让你陷入停止你的应用程序的无限循环,添加一个console.log,并重新启动你的应用程序。除了减慢应用程序的开发速度之外,它还会让你的文字变得肮脏,并且会产生不必要的代码。此外,尝试在其他潜在日志记录操作的噪声旁边注销变量时,可能会在尝试查找正在调试的值时使调试变得困难。
调试工具为您提供了console.log无法提供的一些重要功能。特别是,它们允许您在代码中的特定位置暂停执行应用程序,并在程序仍在运行时检查并修改变量的值。
Node.js的内置调试器
Node.js附带一个内置的调试工具。如果您在命令行上启动应用程序,并且应用程序的起点node debug index.js,那么它将以调试模式启动。
这个命令有两个作用:
- 您启动一个交互式调试shell。
- 然后在端口5858上打开一个TCP连接,您可以在其中连接远程调试器与您的应用程序。
在使用console.log进行调试之后,CLI调试器是一个令人不舒服的解决方案。但是您有一组命令可以在运行时在应用程序中进行导航。
$ node debug index.js
高级调试
Chrome和Node.js与V8共享相同的JavaScript引擎,所以应该可以使用相同的工具来调试和分析应用程序。
对于旧版本的Node.js,有一个名为node-inspector的工具,它将Node的V8引擎与Chrome开发人员工具相连接。它不适用于当前的Node.js版本,但在2016年5月,该--inspect标志着陆在Node.js中,并具有更好的调试支持。
与节点检查器相比,您无需安装任何附加模块即可使--inspect标志正常工作。你只需要用这个标志开始你的应用程序。
$ node --inspect index.js
只要您启动应用程序,Node.js会为您提供一个URL,您可以将其复制到Chrome浏览器的地址栏中。您的浏览器然后连接到您的Node.js实例,并让您调试和配置您的应用程序。这包括设置断点和观看表达式或捕获应用程序的内存快照。
使用Chrome开发人员工具调试Node.js应用程序
IDE调试(VS代码)
目前大多数IDE支持Node.js应用程序的调试,如WebStorm,Eclipse或Visual Studio Code。
让您的调试环境在Visual Studio代码中启动,这很简单,顺便说一下,这只是另一个Node.js应用程序。您只需点击窗口左侧的调试按钮,然后选择要调试的环境(Node.js)。
然后,Visual Studio代码为您创建启动配置并将其保存到.vscode/launch.json应用程序的根文件夹中的文件中。根据您的应用程序的起点,您必须在此进行调整。VS代码预计你的应用程序开始于app.js。如果您以不同的方式命名起点,只需进入launch.json并更改程序键的值即可。之后,您可以启动您的调试器并查看您的应用程序。
我们以一个简单的Web服务器为例。为了调试此应用程序,您必须设置一个断点(通过单击行号左侧),启动调试器,然后转到本地浏览器中的服务器URL。然后应用程序会自动停止在您的断点处,您可以开始逐步完成代码。
如您所见,不再需要console.log语句来调试您的应用程序代码。只需启动您选择的调试器,并有一个舒适的界面来在运行时查看您的代码。
閱讀更多 愛碼農 的文章