内置调试(Node检查器)Node.js包含一个进程外调试实用程序,可以通过V8检查器或内置调试客户端访问。开始:nodeinspect--port=[9229][nodeFile]单步执行cont,c:继续执行。next,n:进入下一行。step,s:单步进入。out,o:单步退出。pause:暂停正在运行的代码(类似于开发者工具中的暂停按钮)。BreakpointsetBreakpoint(),sb():在当前行设置断点。setBreakpoint(line),sb(line):在指定行设置断点。setBreakpoint('fn()'),sb(...):在函数体的第一条语句上设置断点。setBreakpoint('script.js',1),sb(...):在script.js的第一行设置断点。clearBreakpoint('script.js',1),cb(...):清除script.js中第一行的断点。infobacktrace,bt:打印当前执行帧的backtrace。list(5):列出脚本源代码的5行上下文(前后各5行)。watch(expr):将表达式添加到观察列表。unwatch(expr):从监视列表中删除表达式。watchers:列出所有观察者及其值(自动在每个断点上)。repl:打开调试器的repl以在被调试脚本的上下文中执行。execexpr:在调试脚本的上下文中执行表达式。执行控制运行:运行脚本(调试器启动时自动运行)。重新启动:重新启动脚本。kill:杀死脚本。杂项脚本:列出所有加载的脚本。version:显示V8的版本。运行命令行,终端提示错误:Timeout(2000)waitingfor127.0.0.1:9229tobefree。这不是端口被占用的问题,而是nodeinspect打开端口超时导致的bug。可以尝试升级node-inspect的版本,或者修改node.exe的超时配置。https://github.com/nodejs/nod...V8InspectorV8Inspector的集成允许将Chrome开发人员工具附加到Node.js实例以进行调试和分析。它使用Chrome开发者工具协议。Start:node--inspect[nodeFile]#Specifyportnode--inspect=[port][nodeFile]#在应用程序代码的第一行打断点node--inspect-brk[nodeFile]$node--inspect-brkdebug/index.jsDebugger监听ws://127.0.0.1:9229/1dc7da88-983c-4fbe-a8e3-2d5f256e98af有关帮助,请参阅:https://nodejs.org/en/docs/inspectorDebugger附件。开始调试:在Chrome浏览器地址栏输入chrome://inspect或about:inspect,回车即可看到如下界面。NIM每次调试Node.js都要打开这么深的隐藏入口,是不是很烦?幸运的是我们有NIM。NIM(NodeInspectorManager)是一个Chrome扩展,可以帮助我们快速打开DevTools,或者设置自动发现和打开DevTools。inspect-process如果你觉得NIM使用起来也很麻烦,那么你可能需要inspect-process。全局安装:npmiinspect-process-g命令:inspectapp.jsinspect-process会自动调用ChromeDevTools,然后定位到app.js,其余用法与ChromeDevTools一致。process._debugProcess如果没有加--inspect参数就已经启动了一个Node.js进程,我们又不想重启(场景会丢失)又想调试怎么办?这时候就可以使用process._debugProcess了。使用方法如下:使用ps命令或pgrep-nnode查看当前启动的Node.js进程的pid,例如:53911。斧头|grepapp.js打开一个新终端,运行:node-e"process._debugProcess(53911)",会打印出原来的Node.js进程:Debuggerlisteningonws://127.0.0.1:9229/2331fa07-32af-45eb-a1a8-珠7a0ab905。打开ChromeDevTools进行调试。nodeinspect和node--inspectnode--inspect的区别:调试app.js,但是暴露了远程调试接口,像vscode、Chromedevtools、Intellij等都可以附上。此外,app.js运行良好并且可以从终端完全控制。节点检查:与节点捆绑在一起的交互式CLI调试器。它可以替代可视化调试器,例如vscode或Chromedevtools。或者,CLI调试器可以使用node--inspect在单独的进程中启动脚本并附加到它。两者的关系在更多的流和跨机器远程调试的支持上更加明显:#启动app.js并暴露inspect接口,默认在端口9229:node--inspectapp.js#在一个单独的终端中,启动inspect客户端针对9229端口:nodeinspect-p9229node--inspectapp.js运行后,CLI调试器(nodeinspect连接到可用的调试接口进程(node--inspect)。VisualStudioCodeVscode编辑器调试是通过插件实现的,VSCode默认支持Node.js调试器,而JavaScript调试需要安装DebuggerforChrome插件,点击左侧栏的Extensions按钮,搜索DebuggerforChrome,点击安装,点击左栏运行按钮,打开调试栏,点击左栏上方配置按钮,打开laungh.json文件进行配置。{//使用IntelliSense了解可能的属性。//悬停以查看现有属性的描述。//更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","configurations":[{"type":"node-launch","request":"launch","name":"LaunchNodeJs","skipFiles":["
