next.js: Debugger not binding breakpoints in VSCode in server components, using official Next.js debugger setup
Link to the code that reproduces this issue
https://github.com/andrewmartin/nextjs-example
To Reproduce
- Open the code in
VSCode
- Add a breakpoint in any server side files
- Open the “Run and Debug” panel
- Select “Next.js: debug full stack” and press “F5” or the play button
- Note that breakpoints don’t land when requests are made in either scenario.
Breakpoints set in server components that aren’t attached (sorry the screencaps below didn’t show my mouse hover so here’s a gif):
Debug diagnostics:
Some of the sources loaded (I can provide more if needed):
Current vs. Expected behavior
Hi everyone! The code repo shared is a brand new, blank create-next-app
using Typescript, Next 14
, and the app
directory. I only added the debugging setup from the official docs and a single basic API endpoint at /api/health
and that’s it. For some reason I cannot for the life of me get my breakpoints to attach.
Well, that’s partially true, The only breakpoints that seem to be mapped with my codebase are those in the Browser / client side components. I have tried SO many things to get this to work and have read probably about 30 posts about trying to fix this.
I’d love to know if anyone has any ideas why a vanilla Next.js project might not find my sources. Thanks in advance for your help!
Provide environment information
Operating System:
Platform: darwin
Arch: arm64
Version: Darwin Kernel Version 23.3.0: Wed Dec 20 21:30:44 PST 2023; root:xnu-10002.81.5~7/RELEASE_ARM64_T6000
Binaries:
Node: 20.11.0
npm: 10.2.4
Yarn: 1.22.21
pnpm: N/A
Relevant Packages:
next: 14.1.0
eslint-config-next: 14.1.0
react: 18.2.0
react-dom: 18.2.0
typescript: 5.3.3
Next.js Config:
output: N/A
Which area(s) are affected? (Select all that apply)
Not sure
Which stage(s) are affected? (Select all that apply)
next dev (local)
Additional context
I have tried:
- Using blank (vanilla) VSCode insiders
- Using alternative node versions (node 18, other minor node 20)
- Tried mucking around with the launch config a bit, like adjusting
sourceMapPathOverrides
etc
Some of my colleagues have had luck seeing them, others have not.
About this issue
- Original URL
- State: open
- Created 5 months ago
- Reactions: 4
- Comments: 19
Also struggling with this, can’t manage to make server side debugging work
Hi all,
I’ve just been down this rabbit hole and its terrible. By a stroke of luck, I could get it working. I might be repeating what is already said here, just from a different perspective which may help someone.
Full degression, running Next
14.1.4
, Nodev20.11.0
(LTS) (in WSL - probably irrelevant, so I’ll just say Ubuntu). I’ve tested it in pages and app router.This is the first time I’ve actually been able to get a NodeJS application actually to debug, and I can’t believe it.
My environment is turborepo (soon to be nx, but thats another story).
I can confirm my relative path to next is
apps/web
from the root. and in the end, it didn’t matter anyway.My symptoms were a lot the same as the others here, client side is perfect, server side might as well be located in Mars for all I knew. I looked in the NodeJS debug tool and saw that only a subset of my server files were actually being exposed.
After actually using my eyes 👀 I saw this.
Now call me stupid or ADHD riddled, but I stopped looking normally at the first line mentioning port 9229. It sneaks in 9230 which i found the NodeJS debug tool via Chrome does NOT add by default. At this point I didn’t go straight to vscode. I stayed with the Node debugger to do some more testing. I added it in.
After adding it in and probably restarting the dev server with the documented normal command via Package JSON script
I looked at the sources tab in Node Devtools
and it actually had
web
listed there which is the folder NextJS is in (as im running monorepo). My cardiovascular signs increased. I then added a breakpoint in the Chrome devtools using the file explorer in sources and clicking on a line number in the file previewer.I ran the code, and the breakpoint tripped. I thought I was tripping instead to be honest, this is the closest I’ve ever gotten.
Only now did I go back to VSCode Debug
I made the new debug file which I’ve rage deleted many times.
IMPORTANT SIDE NOTE: This does not start your dev server, it purely connects to what is running, so start your dev server with inspect as per previous Package JSON mention.
The debugger attached but breakpoints are still not red/are hollow with no fill. I tried it anyway, and it worked.
Things that did not work for me
outFiles
pointing to the.next
directory. While it technically did work, vscode would only show the webpack compiled version which is better than nothing, but is yucky none the less.Things that may be useful troubleshooting
Everyone mentions
${workspaceFolder}
in their configurations, but if you are unsure what it is, or you have doubts vscode is selecting the right one, use this echo task to double check it. It’s for Linux/WSL so adopt to Windows how you see fit. or ChatGPT it.I hope this helps you on your journey of accelerated hair loss.
I’ve been facing the same issue, and ultimately the discussion in #56702 is what helped me solve it.
Add the following
launch.json
:If you’re not using Turbopack, replace
sourceMapPathOverrides
with: (haven’t tried this one)I definitely did not need to do this back in the day (
13.5.x
for sure), so something must have regressed relatively recently.Hi all, I just wanted to add what I’ve been using with the app router to get my debugging working as similar to the pages method in the docs. The main thing ive added compared to other suggestions is the ability to debug the full stack in one task.
Tested on Windows with WSL(ubuntu) and using the regular VSCode
I’ve been unable to get
next dev
to properly start up with debugging enabled. If I use the launch config suggested in the docs, node simply isn’t launched with debugging enabled at all. If I try manually, eg:…this results in the parent
next dev
process running with debugging, but the worker subprocess tries to debug on the same port, which fails.I was able to at least get debugging working by starting plain
next dev
with no debugging enabled, then sendingSIGUSR1
to thenext-router-worker
subprocess spawned by thenext dev
process. I can then use VS Code to attach to the worker process.This is a painful workaround; something in Next needs to be fixed to make debugging work properly.
@albert-kovalevskij Had the solution for me. This only affects those using turborepo.
“P.S. https://nextjs.org/docs/pages/building-your-application/configuring/debugging just being stupid and not reading the docs, actually it worked perfectly by setting “cwd”: “${workspaceFolder}/apps/web” for turporepo”
I hope your thread can get some attention from the team – debugging is such a core part of development experience, it’s in everyone’s best interest to get this fixed and/or clarified ASAP. Best of luck with your scenario!