当前位置: 首页 > 后端技术 > Node.js

如何调试Node.js应用程序

时间:2023-04-03 14:20:12 Node.js

使用--inspcet选项启动Node应用程序,Node进程将开始侦听调试器客户端/代理。默认监听127.0.0.1:9229,每个进程都有一个唯一的UUID标识符。可以使用的选项包括:optionfunction--inspect(1)启动调试代理;(2)监听默认地址和端口(127.0.0.1:9229)--inspect=[host:port](1)启动调试代理;(2)监听指定地址和端口--inspect-brk(1)启动调试代理;(2)监听默认地址和端口(127.0.0.1:9229);(3)用户代码开始前的断点(此时我们将代码包裹在一个函数中)--inspect-brk=[host:port](1)启动调试代理;(2)监听指定的地址和端口;(3)用户代码开始前的断点nodeinspectscript.js(1)使用--inspect选项spawn一个子进程,使用主进程运行CLI调试器。效果同node-inspectscript.jsnodeinspect--port=xxscript.js和上一个功能一样,增加了指定端口的功能(默认9229)。使用--inspcet选项启动会议后,会出现如下输出内容:$node--inspectindex.jsDebuggerlisteningonws://127.0.0.1:9229/f87bdaa8-0575-4bf5-9066-000a61c8f1cb寻求帮助,参见:https://nodejs.org/en/docs/inspector注意:上面的地址(ws://host:port/UUID)不是在浏览器中直接访问的调试地址,而是Node之间通信的地址.结果实时显示在浏览器中。使用chrome调试(1)使用--inspect(或上面的其他选项)启动Node应用程序(2)在chrome中调试,有两种方式:一种方式是访问http://[IP]:[port]/json/list(http://[IP]:[port]/json也可以),会返回http请求的元数据(如下),其中webScoketDebuggerUrl为Node.js的通信地址,ChromeUUID为一个特定的标识符,每个进程都会分配一个UUID,所以每次开始调试都会有不同的结果。devtoolsFrontendUrl是需要访问的调试地址,然后访问devtoolsFrontendUrl就可以调试了。或者在该页面打开开发者工具面板,点击“打开Node.js专用Detools”,会弹出Node调试页面。[{"description":"node.jsinstance","devtoolsFrontendUrl":"chrome-devtools://devtools/bundled/js\_app.html?experiments=true&v8only=true&ws=127.0.0.1:9222/5be49fe4-5d50-41b4-a68e-fed5cf2a2f38","devtoolsFrontendUrlCompat":"chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9222/5be49fe4-5d50-41b4-a682a-fed3Ucl"fa:“https://nodejs.org/static/favicon.ico”,“id”:“5be49fe4-5d50-41b4-a68e-fed5cf2a2f38”,“标题”:“node/index.js”,“类型”:“节点","url":"file:///Users/mac/work/test/node/index.js","webSocketDebuggerUrl":"ws://127.0.0.1:9222/5be49fe4-5d50-41b4-a68e-fed5cf2a2f38"}]方法二在Chrome地址栏输入about:inspect,会重定向到chrome://inspect/#devices,点击Configure按钮,查看Node要监听的地址和端口是否有配置完成,点击'inspect'也会打开Node调试页面,此时ChromeDevTools已经连接到Node应用,接下来就可以使用Chrome调试Node了。DebuggingwithVSCode这个文档描述的很清楚,具体操作可以参考。下面主要讲解基本操作:在VSCode中,有两种调试方式:Launch和Attach。两种方式的区别在于是否先启动代码的调试模式。Launch是直接在VSCode中以debug模式启动应用,并连接调试工具;Attach是在调试模式下手动启动应用程序,然后运行VSCode的调试工具,连接到应用程序。在VSCode中,有两种核心调试模式,Launch和Attach,它们处理两种不同的工作流程和开发人员细分。根据您的工作流程,了解哪种类型的配置适合您的项目可能会令人困惑。如果您来自浏览器开发工具背景,您可能不习惯“从您的工具启动”,因为您的浏览器实例已经打开。当您打开DevTools时,您只是将DevTools附加到您打开的浏览器选项卡。另一方面,如果您来自服务器或桌面背景,让您的编辑器为您启动进程是很正常的,并且您的编辑器会自动将其调试器附加到新启动的进程。解释启动之间区别的最佳方式附加是将启动配置视为如何在VSCode附加到它之前以调试模式启动应用程序的方法,而附加配置是如何连接VSCode的de窃听已在运行的应用程序或进程。Launch方式(1)打开DebugTab,打开launch.json,添加配置Node.js:LaunchProgram中的Program选项,设置启动入口文件(2)通过debugtarget下拉列表,选择Theconfigurationnamespecified在上一步中(3)按F5启动应用程序并调试,或者点击“StartDebugging”按钮(绿色三角按钮)Attach模式(1)打开DebugTab,打开launch.json,添加配置Node。js:附加。注意这个配置项中会有一个端口选项,值为Node进程监听的端口,默认为9229(2)使用--inspect(或上面的其他选项)启动Node应用(3)按F5启动调试工具,或者点击“StartDebugging”按钮(绿色三角按钮),它会自动附加到Node应用程序。提示:当调试器客户端连接到Node应用程序时,命令行会输出“Debuggerattached”。使用nodemon热启动Node应用可以在修改Node代码后自动重启,具体使用方法见文档。Node应用热启动后,可能会导致debuggeragent断开连接。使用VSCode进行调试并在chrome中使用devtoolsFrontendUrl时会发生这种情况。您可以在下面看到输出。通过nodemon重启应用程序会导致Node.js和调试器客户端之间的通信地址发生变化。这时,调试器客户端需要重新连接到应用程序。对于VSCode,没有办法重启应用程序连接(应该可以修改launch.json)。您可以使用chrome调试。参考资料https://developers.google.com/web?hl=enhttps://nodejs.org/en/docs/guides/debugging-getting-started/https://www.jianshu.com/p/198a9cf83aaehttp:///www.ruanyifeng.com/blog/2018/03/node-debugger.htmlhttps://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27https://blog.csdn。net/u010476739/article/details/89225416