使用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
相关产品推荐
相关产品推荐

