debug typescript working

This commit is contained in:
Your Name 2026-07-12 14:44:58 +08:00
parent 10dbee91ac
commit 5dc5b06933
1 changed files with 80 additions and 0 deletions

View File

@ -93,3 +93,83 @@ require('dap-go').setup {
detached = vim.fn.has 'win32' == 0, detached = vim.fn.has 'win32' == 0,
}, },
} }
-- ==========================================
-- JavaScript / TypeScript / Next.js Setup
-- ==========================================
-- 1. Define the adapters using the js-debug-adapter installed by Mason
-- We use the direct path to dapDebugServer.js to avoid PATH/binary linking issues.
local js_debug_adapter_path = vim.fs.joinpath(
vim.fn.stdpath('data'),
'mason',
'packages',
'js-debug-adapter',
'js-debug',
'src',
'dapDebugServer.js'
)
local node_terminal = {
type = 'server',
host = 'localhost',
port = '${port}',
executable = {
command = 'node',
args = {
js_debug_adapter_path,
'${port}',
},
},
}
local chrome = {
type = 'server',
host = 'localhost',
port = '${port}',
executable = {
command = 'node',
args = {
js_debug_adapter_path,
'${port}',
},
},
}
require('dap').adapters['pwa-node'] = node_terminal
require('dap').adapters['node_terminal'] = node_terminal
require('dap').adapters['pwa-chrome'] = chrome
require('dap').adapters['chrome'] = chrome
-- 2. Define configurations for TS/JS
local js_based_languages = { 'typescript', 'javascript', 'typescriptreact' }
for _, language in ipairs(js_based_languages) do
require('dap').configurations[language] = {
-- Server-side Next.js debugging
{
type = 'pwa-node',
request = 'launch',
name = 'Nvim: Debug JS Server',
runtimeExecutable = 'npm',
runtimeArgs = { 'run', 'dev' },
cwd = '${workspaceFolder}',
-- 'integratedTerminal' launches a Neovim terminal split and runs the command there
console = 'integratedTerminal',
-- sourceMaps = true, -- Uncomment if breakpoints in `.next` aren't mapping correctly
},
-- Client-side Next.js debugging
{
type = 'pwa-chrome',
request = 'launch',
name = 'Nvim: Debug JS Client',
url = 'http://localhost:3000',
webRoot = '${workspaceFolder}',
-- By default, pwa-chrome uses a clean, isolated Chrome profile.
-- Uncomment the line below if you want it to use your default Chrome profile (so you can use your extensions).
-- userDataDir = false,
-- sourceMaps = true,
},
}
end