DEV Community

Cover image for Debug your Openshift Node.js Apps locally with Visual Studio Code (VS Code)
Austin Cunningham
Austin Cunningham

Posted on • Edited on

3 1

Debug your Openshift Node.js Apps locally with Visual Studio Code (VS Code)

VS Code has built-in debugging support for the Node.js runtime. But how do you remote debug a Node.js application running on Openshift.

Setup Node debugger on Openshift

On Openshift in the browser open the project your app is running on

Select the Pod

Select Terminal for the pod

Node v6 LTS has an inbuilt debugger and can be run in the Terminal enter

node debug app.js 
Enter fullscreen mode Exit fullscreen mode

where app.js will be the starting point for running your app (typically app.js or index.js). This exposes your app in debug mode on port 5858 by default.

Note: Node v8 LTS uses inspect so the command would be node inspect app.js

From the command line login to Openshift and change to your project

oc login https://your-openshift-instance:8443

oc project your-project-name

oc set probe dc your-app-name --liveness --readiness --remove=true
Enter fullscreen mode Exit fullscreen mode

This disables the liveness and readiness checks so your pod doesn’t restart during remote debugging. Returns the similar to the following

deploymentconfig "your-app-name" updated
oc port-forward $(oc get po | grep your-app-name | grep Running | awk '{print $1}') 8888:5858
Enter fullscreen mode Exit fullscreen mode

This will forward port 5858 from the running Pod to a local port 8888 (8888 is an example you can use any free port). Returns the following

Forwarding from 127.0.0.1:8888 -> 5858
Forwarding from [::1]:8888 -> 5858
Enter fullscreen mode Exit fullscreen mode

So now you have debug started in Openshift and forwarded to localhost:8888

Connect Vs Code to the remote

Open Visual Studio Code

Open the Application you wish to debug.

Select Debug option and select Configure ‘launch.json.

Set the launch.json file similar to the following, using the port 8888 from the port forward command, the “program” :”${workspaceRoot}/app.js” variable should match your node.js starting point.

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "attach", 
            "name": "Attach to Remote",
            "address": "localhost",
            "protocol": "legacy",
            "port": 8888,
            "localRoot": "${workspaceRoot}",
            "remoteRoot": "/opt/app-root/src/"
        },
        {
            "type": "node",
            "request": "launch",
            "protocol": "legacy",
            "name": "Launch Program",
            "program": "${workspaceRoot}/app.js"
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

Click the drop down beside the play button and select Attach to Remote

Click on the play button or Select from drop down to start debugging

That it you can now use the debugger as normal

Myblog

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Eliminate Context Switching and Maximize Productivity

Pieces.app

Pieces Copilot is your personalized workflow assistant, working alongside your favorite apps. Ask questions about entire repositories, generate contextualized code, save and reuse useful snippets, and streamline your development process.

Learn more