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

vscode调试node的npm和nodemon

时间:2023-04-03 22:30:48 Node.js

更多相关内容见博客https://github.com/zhuanyongxigua/blog调试nodejs的方法有很多种。你可以阅读这篇文章如何使用可用的最佳工具调试Node.js,其中,我最喜欢的方式是使用V8Inspector和vscode。在vscode中点击蜘蛛按钮可以看到调试侧边栏,然后添加配置选择环境可以看到launch.json文件。启动时选择相应的配置,然后点击绿色小三角指向右侧的启动模式和附加模式{"version":"0.2.0","configurations":[{"type":"node","request":"launch","name":"LaunchProgram","program":"${workspaceRoot}/index.js"},{"type":"node","request":"attach","name":"AttachtoPort","address":"localhost","port":5858}]}当请求启动时,它处于启动模式。这意味着该程序是从vscode启动的。如果正在调试,它将始终处于调试模式。attach方式是连接已经启动的服务。比如你已经在外面启动项目了,突然需要调试。你不需要关闭已经启动的项目并在vscode中重新启动它。只要以attach方式启动,vscode就可以连接到启动的服务。调试结束,断开连接即可,显然比launch方便。在debug中使用npm启动时,我们经常会在package.json的脚本中写很长的启动命令和配置,比如"scripts":{"start":"NODE_ENV=productionPORT=8080babel-node./bin/www","dev":"nodemon--inspect--execbabel-node--presetsenv./bin/www"},我们要让vscode使用npm启动调试,需要如下配置{"name":"LaunchviaNPM","type":"node","request":"launch","runtimeExecutable":"npm","runtimeArgs":["run-script","dev"//这里的dev对应tothedevinscriptsinpackage.json],"port":9229//这个端口是调试用的端口,不是项目启动用的端口},在debug中使用nodemon启动只用npm启动,虽然在dev命令使用nodemon,程序也可以正常重启,但是重启后,调试就断线了。所以需要让vscode使用nodemon来启动项目。{“类型”:“节点”,“请求”:“启动”,“名称”:“nodemon”,“runtimeExecutable”:“nodemon”,“args”:[“${workspaceRoot}/bin/www”],"restart":true,"protocol":"inspector",//等价于--inspect"sourceMaps":true,"console":"integratedTerminal","internalConsoleOptions":"neverOpen","runtimeArgs":[//对应nodemon--inspect除启动文件"--exec","babel-node","--presets","env"]}之外的其他配置,注意这里的runtimeArgs,如果这些配置写在package中.json,就是像这样nodemon--inspect--execbabel-node--presetsenv./bin/www这样很方便,项目可以正常重启,每次重启都会开启调试功能。但是,如果我们不想一直开启调试功能呢?这就需要使用上面提到的attach模式。使用如下命令可以正常启动项目nodemon--inspect--execbabel-node--presetsenv./bin/www当我们要调试的时候,在vscode的debug中运行如下配置{"type":"node","request":"attach","name":"Attachtonode","restart":true,"port":9229}完美!参考DebuggingNode.jsDebugginginVSCodeNodemon+Babel+VSCode我在github上https://github.com/zhuanyongx...