Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running foreman start through visual studio code launch.json

Currently, I am running my solution by typing foreman start into the command line and that is working fine. I'm trying to debug my code using visual studio code. In order to do so, I have created a launch.json file:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "node",
            "request": "launch",
            "program": "${workspaceRoot}/package.json",

            "stopOnEntry": false,
            "args": [],
            "cwd": "${workspaceRoot}",
            "preLaunchTask": "start",
            "runtimeExecutable": null,
            "runtimeArgs": [
                "--nolazy"
            ],
            "env": {
                "NODE_ENV": "development"
            },
            "externalConsole": false,
            "sourceMaps": false,
            "outDir": null
        },
        {
            "name": "Attach",
            "type": "node",
            "request": "attach",
            "port": 5858,
            "address": "localhost",
            "restart": false,
            "sourceMaps": false,
            "outDir": null,
            "localRoot": "${workspaceRoot}",
            "remoteRoot": null
        }
    ]
}

I have created a tasks.json file to try to start the program from that point:

{
    "version": "0.1.0",
    "command": "start",
    "isShellCommand": true,
    "args": [
        "--no-color"
    ],
    "tasks": [
        {
            "taskName": "test",
            "args": [],
            "isTestCommand": true
        },
        {
            "suppressTaskName": true,
            "taskName": "start",
            "args": [
                "foreman",
                "start"
            ],
            "isBuildCommand": true
        }
    ]
}

When I run foreman start normally, I see this output:

$ foreman start
12:00:59 web.1          | started with pid 22641
12:00:59 workers.1      | started with pid 22642
12:00:59 intermediary.1 | started with pid 22643
12:01:00 web.1          | [INFO] Node app is running at localhost: 3777

If I debug in this current state, the output from the console is:

Failed to launch external program start --no-color.
spawn start ENOENT

If I change my program to point to gulp:

"program": "${workspaceRoot}/node_modules/.bin/gulp",

It gives me something a little more promising, but because it isn't foreman, it doesn't run everything I need.

node --debug-brk=16751 --nolazy node_modules/.bin/gulp 
Debugger listening on port 16751
[16:23:17] Using gulpfile ~/Git/backend/gulpfile.js
[16:23:17] Starting 'watch'...
[16:23:18] Finished 'watch' after 125 ms
[16:23:18] Starting 'default'...
[16:23:18] Finished 'default' after 13 μs

Does anyone know how to debug foreman start from visual studio code?

like image 425
Luke Schlangen Avatar asked Oct 31 '22 06:10

Luke Schlangen


1 Answers

This will run foreman start as shell command. Press F1, type Run Task, Enter and select development task.

tasks.json

{
    "version": "0.1.0",
    "command": "foreman",
    "isShellCommand": true,
    "tasks": [
        {
            "suppressTaskName": true,
            "taskName": "development",
            "args": [
                "start"
            ],
            "isWatching": true
        }
    ]
}

If you want to debug a web application you should take a look at vscode-chrome-debug if it is a node application you have to set the entry point of your app as program in launch.json "program": "${workspaceRoot}/app.js"

like image 189
Steffen Avatar answered Nov 15 '22 05:11

Steffen