风中飘落的玫瑰 發表於 2020-3-10 22:18:00

vscode调试node.js项目

<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
                        <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path>
                  </svg>
                                          <p>vscode调试node.js项目一般有三种情况:</p>
<p>1.vscode启动调试服务端,直接运行要调试的入口文件,开发时比较适合,目前好像只能运行js文件,ts文件可能有点难度</p>
<p>2.远程调试,需要远程服务端以调试模式先运行起来,然后本地根据host、post连接远程调试服务器</p>
<p>3.本地根据进程调试,需要本地服务端先运行起来,然后本地根据进程id附加到指定进行调试,不需要服务端以调试模式运行</p>
<p>vscode中内置了这几种方式的配置:</p>
<p>1.直接本地以调试模式运行服务端,同时运行调试客户端连接</p>
<p>直接以node命令运行:</p>
<p>调试运行框-&gt;添加配置-&gt;Node.js:启动程序,生成配置如下:</p>
<pre><code>{
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}\\index.js"
    }
</code></pre>
<p>其中选项:<br>
type:代表调试环境,node、python、c++等</p>
<p>request:代表行为,launch为直接运行入口文件,attach为附加到远程调试客户端,或者附加到本地进程</p>
<p>runtimeExecutable:运行时,即运行的命令,node、nodemon等,type为node时默认为node可以省略</p>
<p>runtimeArgs:运行参数,传递给运行时</p>
<p>program:代表运行的脚本</p>
<p>运行调试的输出:</p>
<p>node --inspect-brk=41886 index.js<br>
Debugger listening on ws://127.0.0.1:41886/44ec2627-9ddf-44a8-8eb5-19389d2b57d5<br>
说明程序以调试模式启动,且随机指定了调试端口,而且调试信息以websocket协议传输,vscode的调试客户端就是连接到这个调试端口的</p>
<p>直接以nodemon命令运行:</p>
<p>调试运行框-&gt;添加配置-&gt;Node.js:Nodemon安装程序,生成配置如下:</p>
<pre><code>{
      "type": "node",
      "request": "launch",
      "name": "nodemon",
      "runtimeExecutable": "nodemon",
      "program": "${workspaceFolder}/index.js",
      "restart": true,
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
    }
</code></pre>
<p>看到运行时为nodemon,restart为true,应该为nodemon专属参数<br>
运行调试的输出:</p>
<p> starting <code>node --inspect=48487 --debug-brk index.js</code><br>
Debugger listening on ws://127.0.0.1:48487/60beffd8-d508-4fd4-97e2-1126ce113733<br>
For help see https://nodejs.org/en/docs/inspector<br>
Debugger attached.<br>
nodemon内部执行了相同的node命令</p>
<p>2.附加到远程服务端调试</p>
<p>调试运行框-&gt;添加配置-&gt;Node.js:附加到远程计划,生成配置如下:</p>
<pre><code>{
      "type": "node",
      "request": "attach",
      "name": "Attach to Remote",
      "address": "localhost",
      "port": 27965,
      "localRoot": "${workspaceFolder}",
      "remoteRoot": "Absolute path to the remote directory containing the program"
    }
</code></pre>
<p>最后两个选项暂时不管,没用到,主要:<br>
address:远程调试服务端域名</p>
<p>port:远程调试端口</p>
<p>启动调试服务端:</p>
<p>node --inspect-brk=27965 index.js<br>
Debugger listening on ws://127.0.0.1:27965/be5ec018-fa58-4948-9f8d-c648c8f2dc83<br>
For help see https://nodejs.org/en/docs/inspector<br>
启动调试:<br>
Debugger attached.<br>
说明调试器附加上了<br>
这里还有一些说明:</p>
<p>nodemon启动调试:</p>
<p>nodemon --inspect-brk=27965<br>
输出:<br>
starting <code>node --inspect-brk=27965 index.js</code><br>
Debugger listening on ws://127.0.0.1:27965/14488469-286f-411e-a73a-d49ea5d8effa<br>
For help see https://nodejs.org/en/docs/inspector<br>
说明nodemon命令的调试选项会传递给node命令,而默认参数为index.js</p>
<p>3.附加到指定进程调试<br>
调试运行框-&gt;添加配置-&gt;Node.js:附加到进程,生成配置如下:<br>
{<br>
“type”: “node”,<br>
“request”: “attach”,<br>
“name”: “Attach by Process ID”,<br>
“processId”: “21920”<br>
}<br>
只有一个进程id需要稍微理解一下<br>
启动项目:</p>
<p>node index.js<br>
运行调试:<br>
Debugger listening on ws://127.0.0.1:9229/6cf17f3e-8844-43eb-b3c4-aab3dd59af8a<br>
For help see https://nodejs.org/en/docs/inspector<br>
Debugger attached.</p>
<p>这里还有最后一个问题:ts项目目前好像不能直接使用ts-node运行进行调试,必须经过index.js<br>
require(‘ts-node/register’);<br>
require(’./src/main’);<br>
即入口文件只能是js,或者说我还不会直接在调试时运行ts</p><br><br>
来源:https://www.cnblogs.com/wjlbk/p/12633343.html
頁: [1]
查看完整版本: vscode调试node.js项目