vscode本身不自动保存也不自动运行,需设files.autosave为onfocuschange或afterdelay,并通过tasks.json配置type:"shell"、runon:"save"、group:"build"三项核心字段触发nodemon;改代码无反应主因是文件未落盘、监听路径不匹配或inotify限制。

VSCode 本身不自动保存也不自动运行,nodemon 只负责监听文件变化并重启进程;要实现“保存即运行”,必须拆解为两个独立动作:保存 + 启动/重启 nodemon。
为什么改了代码 nodemon 没反应?先确认文件是否真写入磁盘
VSCode 默认不自动保存,你 Ctrl+S 之前改的代码根本没落盘,nodemon 监听的是磁盘文件,不是编辑器内存。常见现象是:改完点保存按钮、终端里 nodemon 还在跑旧逻辑。
-
files.autoSave必须设为onFocusChange(推荐)或afterDelay,不能是off - 标题栏显示
Untitled-1的临时文件永远不会被 nodemon 监听,必须先Ctrl+S一次指定路径 - 检查右下角状态栏:如果出现红色提示(如 “Prettier failed”),说明格式化插件中断了保存流程,文件实际未写入
- 远程开发(WSL/SSH)时,
onFocusChange响应稍慢,建议把项目移到 WSL 原生路径(如~/project),避免挂载点 IO 延迟
用 Tasks 配置保存即触发 nodemon,而不是靠插件“自动运行”
别用 code-runner 或 Auto Save 类插件来“一键运行”——它们绕过 VSCode 保存生命周期,容易导致 Git 脏检查失效、Prettier 不生效、甚至格式化后保存失败却仍执行旧代码。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 在
.vscode/tasks.json中定义 task,核心字段缺一不可:"type": "shell"、"runOn": "save"、"group": "build" - command 写成
"npm run dev"容易失败(npm 不在 PATH),改用"bash -c \"npm run dev\""或绝对路径(如/usr/local/bin/npm) - 如果
npm run dev调用的是nodemon index.js,确保它带--watch参数(默认已启用),且不加--exitcrash,否则崩溃后不再监听 - 任务需设
"isBackground": true,否则 VSCode 会等命令退出才响应下一次保存,而 nodemon 是长进程
调试时 nodemon 自动重连,关键在 attach 模式 + restart: true
你不是让 VSCode 启动 nodemon,而是让它“连接上 nodemon 启动的新进程”。如果用 launch 模式配 runtimeExecutable: "nodemon",Windows 上大概率报 spawn nodemon ENOENT,Linux/macOS 可能找不到本地 node_modules/.bin/nodemon。
- package.json 里加脚本:
"debug": "nodemon --inspect-brk ./index.js"(入口路径按实际改) - 终端先执行
npm run debug,等看到Debugger listening on ws://127.0.0.1:9229/ -
.vscode/launch.json中配一个"request": "attach"的配置,固定"port": 9229,并设"restart": true -
--inspect-brk比--inspect更可靠:它让进程启动即暂停,确保你在 Express 初始化前就附加上去,不会错过app.use或数据库连接逻辑
真正容易被忽略的细节:nodemon 的监听范围和 VSCode 的文件系统行为不总是一致
VSCode 的 files.watcherExclude 或系统 inotify 限制,会导致 nodemon 收不到变更事件——你明明保存成功了,nodemon 却无反应。
- 检查
.vscode/settings.json是否有"files.watcherExclude": {"**/node_modules/**": true}—— 如果你把源码放在node_modules下(极少见但存在),nodemon 就不会监听 - Linux 下若项目文件多,
/proc/sys/fs/inotify/max_user_watches默认 8192,不够时 nodemon 会静默失效;临时解决:运行echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches - VSCode 在 WSL 中对
/mnt/c/路径的文件变更通知有时延迟或丢失,nodemon 日志里会出现File change detected. Starting incremental compilation...却没重启——换到~/project就正常










