必须启用vscode调试模式才能查看执行流程,关键是在launch.json中配置--inspect-brk参数使deno暂停等待连接,并确保deno.enable开启、deno.path正确、断点设在函数或异步回调内。

直接运行 deno run 时看不到执行流程?不是插件问题,是没进调试模式
VSCode 默认的“运行”操作(比如右键 Run Code 或用 Code Runner)只是调起终端执行 deno run main.ts,它不启用调试器,自然没有断点、变量监视、单步执行这些能力。想看执行流程,必须走 VSCode 的调试通道——也就是用 F5 启动调试会话,而不是靠终端命令“跑一下”。
launch.json 中 runtimeArgs 必须带 --inspect-brk
这是最关键的开关:没有它,Deno 进程启动后立刻执行完退出,VSCode 根本来不及连接。漏掉这个参数,点 F5 会卡住、报 “Cannot connect to runtime process”,或者直接闪退。
正确配置示例(放在项目根目录 .vscode/launch.json 中):
{
"version": "0.2.0",
"configurations": [
{
"name": "Deno Run",
"type": "pwa-node",
"request": "launch",
"program": "${file}",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "deno",
"runtimeArgs": ["run", "--inspect-brk", "-A"],
"attachSimplePort": 9229
}
]
}
-
--inspect-brk:让 Deno 启动后暂停在第一行,等调试器连上再继续 -
-A:授予全部权限(网络、文件、环境变量等),否则遇到Deno.readTextFile或fetch就直接 PermissionDenied 退出,根本走不到断点 -
program设为"${file}"表示当前打开的文件;如果固定跑某个入口,可写成"${workspaceFolder}/main.ts"
点 F5 前,先确认右下角显示 Deno: v1.x
这个状态栏提示不是装饰——它代表 Deno 语言服务器已加载、deno.enable 已生效、且 VSCode 能定位到本地 deno 可执行文件。如果只显示 TypeScript 或空白,F5 调试大概率失败。
验证步骤:
- 在集成终端(
Ctrl+`)中运行which deno,确认有输出路径 - 检查工作区
.vscode/settings.json是否有"deno.enable": true(不能只在用户设置里) - 若用 Homebrew 安装 Deno,
deno.path应填/opt/homebrew/bin/deno(Apple Silicon)或/usr/local/bin/deno(Intel),别用~或符号链接
断点打在哪才有效?避开模块顶层同步代码
在 main.ts 最外层写 console.log("start"),然后在这行打断点——F5 后它不会停。因为 Deno 的 --inspect-brk 是暂停在“脚本第一行可执行语句”,但模块顶层的同步代码(比如 console.log、变量声明)在 V8 初始化阶段就执行完了。
真正能停住的地方:
- 函数内部,例如
function main() { debugger; console.log("here"); } -
setTimeout或Promise回调里(异步任务队列) - HTTP 服务启动后,等请求进来时(如
serve()的 handler 函数内)
最简单验证方式:把所有逻辑包进一个立即执行函数,断点打在里面。
调试流程本身不复杂,但卡点全在环境是否干净——deno.enable 开没开、deno.path 对不对、--inspect-brk 加没加、断点位置合不合适。四个条件缺一不可,少一个就只能看到终端输出,看不到执行流。











