Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to debug a nodemon project in VSCode

I have a NodeJs project and I run it using nodemon,
I wish to run it in debug mode for development tasks, but I am unable to do so.

I found that I'll need to add the right configuration to the launch.json file under .vscode folder,
I have a app.js file which is the main app file.
And the application runs on node version 4.6.2 and on Port 8080.
In usual case I run the App using npm run dev command.

Following is my launch.json file -

{     // Use IntelliSense to learn about possible attributes.     // Hover to view descriptions of existing attributes.     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387     "version": "0.2.0",     "configurations": [         {             "type": "node",             "request": "launch",             "name": "MyApp",             "program": "${workspaceFolder}/app.js",             "runtimeVersion": "4.6.2",             "protocol": "legacy",             "port": 8080             //"runtimeExecutable": "/home/user/.nvm/versions/node/v4.6.2/bin/node"         },         {             "type": "node",             "request": "launch",             "name": "nodemon",             "runtimeExecutable": "nodemon",             "program": "${workspaceRoot}/app.js",             "restart": true,             "console": "integratedTerminal",             "internalConsoleOptions": "neverOpen",             "runtimeVersion": "4.6.2",             "protocol": "legacy",             "port": 8080         },         {             "type": "node",             "request": "launch",             "name": "DEBUG",             "runtimeExecutable": "nodemon",             "program": "${workspaceFolder}/app.js",             "restart": true,             "console": "integratedTerminal",             "internalConsoleOptions": "neverOpen",             "runtimeVersion": "4.6.2",             "protocol": "legacy",             "port": 8080         }     ] } 

The package.json is as follows -

{   "name": "myapp",   "description": "myapp",   "version": "1.35.0",   "private": true,   "scripts": {     "dev": "nodemon app.js",     "debug": "nodemon app.js"   },   "dependencies": {     "async": "1.3.0",     "aws-sdk": "2.7.20",     "aws-xray-sdk": "^2.1.0",     "aws-xray-sdk-restify": "^1.3.0-beta",     "bcrypt": "0.8.5",     "body-parser": "1.12.3",     "compression": "^1.7.0",     "connect-flash": "0.1.1",     "cookie-parser": "1.3.4",     "cron": "1.0.9",     "csurf": "^1.9.0",     "csvtojson": "^1.1.2",     "date-utils": "1.2.16",     "dotenv": "4.0.0",     "email-templates": "1.2.1",     "express": "4.12.3",     "express-handlebars": "2.0.0",     "express-jwt": "^5.1.0",     "express-mailer": "0.2.4",     "express-session": "1.11.1",     "express-validator": "3.1.3",     "handlebars": "^3.0.3",     "helmet": "^3.5.0",     "html-pdf": "1.4.0",     "json-2-csv": "2.0.12",     "jsonwebtoken": "^7.3.0",     "multer": "^0.1.8",     "mysql": "2.6.2",     "newrelic": "1.25.0",     "node-schedule": "^1.3.0",     "nodemailer": "^1.3.4",     "nodemailer-ses-transport": "1.2.0",     "passport": "0.2.1",     "passport-local": "1.0.0",     "path": "0.11.14",     "promise": "7.0.0",     "qs": "^2.4.1",     "replaceall": "0.1.6",     "request": "2.55.0",     "run-parallel": "1.1.0",     "validator": "^7.0.0",     "winston": "^2.3.1",     "winston-daily-rotate-file": "^1.7.0",     "xlsx": "0.8.8"   },   "devDependencies": {     "nodemon": "^1.17.3"   } } 

The App gets launched when I run the DEBUG and nodemon configurations,
But the code is not getting paused on the breakpoints I put on the app.js file.

Reference links -
1. https://github.com/Microsoft/vscode-recipes/tree/master/nodemon
2. https://github.com/bdspen/nodemon_vscode
3. Can Visual Studio Code be configured to launch with nodemon
4. Cannot debug in VSCode by attaching to Chrome
5. https://code.visualstudio.com/docs/editor/debugging

What changes are required in package.json, or any corrections in Launch configuration - launch.json, that would help me to debug the application in VSCode for my usecase?

like image 389
Ani Avatar asked Nov 17 '18 14:11

Ani


People also ask

How do you debug in Nodemon?

Start server "npm run dev" (as you can see, in "request" property, we set to attach. So we have to run the server firstly and then attach the debugger). Click on the left side of vscode in the bug-like icon. On top you will see the small green play icon.

How do you run Nodemon in VS Code?

In order for you to run nodemon with VS Code, you have to set the attribute "restart" to true . This sets the VS Code debugger to re-attach to your node. js application after it is terminated by nodemon. This is useful because nodemon will restart the app on every save made.

How do I debug code in Visual Studio Code?

To bring up the Run and Debug view, select the Run and Debug icon in the Activity Bar on the side of VS Code. You can also use the keyboard shortcut Ctrl+Shift+D. The Run and Debug view displays all information related to running and debugging and has a top bar with debugging commands and configuration settings.


1 Answers

Change package.json to

"scripts": {     "dev": "node app.js",     "debug": "nodemon --inspect app.js" } 

--inspect is for versions >= 6.3. --legacy or --auto for older versions

And launch.json to:

"version": "0.2.0", "configurations": [     {         "type": "node",         "request": "attach",         "name": "Node: Nodemon",         "processId": "${command:PickProcess}",         "restart": true,         "protocol": "inspector"     } ] 

the restart flag is the key here.

Start app via new debug script

npm run debug

  • In Debug view, select the Node: Nodemon configuration and press play or F5
  • Choose the process started above

See more: vscode nodemon recipe

like image 157
The Geek Avatar answered Sep 20 '22 14:09

The Geek