You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VS Code时Node.js报No debugger available错误,sqlite3查询求助

解决VS Code中Node.js调试报错"No debugger available, can not send 'variables'"

以下是针对该场景的解决步骤:

  • 检查调试配置文件launch.json
    打开VS Code的调试面板,点击"创建launch.json文件"(若已有则直接编辑),选择Node.js环境,确保配置中的program字段指向你的脚本文件,示例配置如下:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "type": "node",
                "request": "launch",
                "name": "Launch Program",
                "program": "${file}"
            }
        ]
    }
    

    确认program路径无拼写错误,${file}表示当前打开的文件,适合单文件调试场景。

  • 升级Node.js到LTS版本
    旧版Node.js可能与VS Code内置调试器存在兼容性问题,建议升级到官方推荐的LTS版本(如v18.x或v20.x),升级完成后重启VS Code再尝试调试。

  • 重启调试会话或VS Code
    有时调试进程会异常卡住,点击调试面板的停止按钮终止当前会话,再重新启动调试;若无效,直接重启VS Code以清除缓存的调试进程。

  • 排查冲突的VS Code扩展
    部分第三方扩展(如代码格式化、性能监控类工具)可能干扰Node调试器,暂时禁用所有非官方扩展,逐个启用排查出导致问题的扩展。

  • 调整异步代码的调试姿势
    你的代码使用了sqlite3的异步回调db.all,调试器可能因异步执行时机问题无法捕获变量,可以改用Promise包装异步操作,并将断点设置在回调内部:

    const sqlite3 = require('sqlite3').verbose();
    
    async function fetchUserData() {
        const db = new sqlite3.Database('./dummyuserdata.db', (err) => {
            if (err) return console.error(err.message);
            console.log('Connected successfully.');
        });
    
        try {
            const rows = await new Promise((resolve, reject) => {
                db.all("SELECT * FROM USERDATA", [], (err, rows) => {
                    if (err) reject(err);
                    else resolve(rows);
                });
            });
            console.log(rows);
        } catch (err) {
            console.error(err.message);
        } finally {
            db.close(); // 记得关闭数据库连接
        }
    }
    
    fetchUserData();
    

    调试时将断点设置在console.log(rows)这一行,确保调试器能捕获到异步回调的执行上下文。

内容的提问来源于stack exchange,提问作者ICantDoThis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:35:05