vscode“找不到文件”90%因工作目录或排除规则配置错误:调试需在子项目.launch.json中设"cwd";search.exclude和files.exclude会隐藏文件;多根工作区各子项设置独立,须逐一核对。

VSCode 报“找不到文件”,90% 不是代码写错了,而是当前工作目录(cwd)和你预期的不一致——尤其在调试、多根工作区或单文件打开时,open("config.json")、require("./utils") 这类相对路径会直接失效。
launch.json 里没配 cwd 就别调试
VSCode 调试时默认继承窗口级工作目录,不是你当前编辑的文件所在目录。比如你在 src/main.py 里写 open("../data/input.txt"),但窗口根目录是 /project,而调试器却以 /home/user 为 cwd,自然报 FileNotFoundError。
- 必须在
.vscode/launch.json的对应配置中显式写"cwd": "${fileDirname}"(脚本自身目录)或"cwd": "${workspaceFolder}"(项目根目录) - 这个
launch.json必须放在子项目自己的.vscode/下,不能只放在工作区根目录的.vscode/里 - 别写
"cwd": "./backend"——VSCode 不解析这种相对路径,会静默忽略 - Windows 上用
gdb.exe调试 C++ 时,miDebuggerPath也得是绝对路径,比如"C:/MinGW/bin/gdb.exe"
search.exclude 拦住了文件,不是搜索坏了
你 Ctrl+Shift+F 搜不到某段代码,大概率不是 VSCode 没扫到,而是它压根没读那个文件——因为被 search.exclude 规则过滤了。
- 打开搜索面板右下角的
!图标,点掉「使用排除规则」,立刻能搜到?那就是它在拦 - 检查设置里
search.exclude是否误加了宽泛规则,比如"**/*.js": true或"src/**": true -
"**/node_modules/**"是安全写法;只写"node_modules"可能意外匹配src/my_node_modules/ - Git 项目里若启用了
"search.useIgnoreFiles": true,.gitignore里的路径也会被自动排除
资源管理器不显示文件?先看 files.exclude 和工作区状态
左侧文件树空白、刷新没反应、Open Folder 后子目录全空——不是磁盘问题,是 VSCode 没加载对上下文。
- 确认你用的是 File > Open Folder,而不是双击单个文件(单文件模式下
cwd极不稳定) - 检查
files.exclude设置,它不仅隐藏资源管理器里的文件,某些扩展(如 WSL 插件)还会因此跳过监听 - 多根工作区中,每个子文件夹的
.vscode/settings.json是独立生效的;某个子项里写了"files.watcherExclude": {"**/node_modules/**": true},可能连带让父级文件监视器崩溃 - 大仓库卡住?Linux 下试试
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
最麻烦的其实是混合场景:比如你在多根工作区里调试一个子项目,同时又想全局搜另一个子项目的 JS 文件——这时 cwd、search.exclude、files.exclude 三者要各自对齐,稍有错位就表现成“文件明明存在却死活找不到”。别信默认值,每个环节都得手动钉死。











