vscode报“路径无效”90%不是代码写错,而是当前工作目录(cwd)与相对路径预期位置不一致;需分别配置code runner的code-runner.filedirectoryascwd、调试时launch.json中"cwd": "${filedirname}"、js/ts项目的jsconfig.json别名映射,并重启ts server生效。

为什么VSCode说“路径无效”不是代码问题
VSCode报“路径无效”,90%不是你写错了路径,而是它压根没在你预期的位置找文件。比如open("config.json")失败,不是config.json不存在,而是当前工作目录(cwd)不在该文件所在文件夹——Python、Node.js、Rust这些语言都按cwd解析相对路径,而VSCode默认不保证cwd和你编辑的文件一致。
常见现象包括:FileNotFoundError: [Errno 2] No such file or directory: 'data.csv'、调试能跑通但Code Runner直接炸、终端里cd进去再python main.py就正常。
- Code Runner 默认以项目根目录为
cwd,不是当前文件夹 - 调试(F5)走
launch.json,和 Code Runner 完全两套机制 - 绝对路径(如
C:\project\src\utils.py)在跨平台或协作时会失效,别硬写
Code Runner 运行时固定工作目录
如果你用 Ctrl+Alt+N 或右键“Run Code”,得改 Code Runner 的行为,否则它永远按项目根目录跑。
- 打开设置(
Ctrl+,),搜code-runner.fileDirectoryAsCwd,勾选它;或者手动在settings.json加:"code-runner.fileDirectoryAsCwd": true - 顺手开
"code-runner.runInTerminal": true,避免集成终端缓存旧cwd - 如果用了虚拟环境,检查
code-runner.executorMap里的 Python 路径是否指向venv/bin/python(macOS/Linux)或venv\Scripts\python.exe(Windows)
改完不用重启,下次运行立即生效——但只影响 Code Runner,不影响调试或终端本身。
调试(F5)时让 cwd 对齐当前文件
断点调试走的是 .vscode/launch.json,必须显式设 cwd,否则断点停了也读不到同目录下的配置文件。
- 确保是通过「文件 → 打开文件夹」加载整个项目(否则
${workspaceFolder}会为空) - 在
launch.json的configurations里加:"cwd": "${fileDirname}" - 别写
"cwd": "./src"这种相对路径——它以工作区根为基准,不是当前文件位置 - 如果是 Python,确认
"python.defaultInterpreterPath"指向正确解释器,否则cwd设对了也 import 失败
绝对路径引用失效:别怪VSCode,先看配置文件
写 import "@/components/Button" 报错“Module not found”,通常不是路径写错,而是 VSCode 不认识这个 @ 别名——它需要 jsconfig.json 或 tsconfig.json 告诉它怎么解析。
-
jsconfig.json(JS项目)或tsconfig.json(TS项目)必须存在,且含compilerOptions.baseUrl和paths - 例如:
"baseUrl": "./src"+"@/*": ["*"]才能让@/api映射到src/api - Webpack/Vite 的
resolve.alias是给打包工具用的,VSCode 不读它;必须双写:构建工具一份,tsconfig.json一份 - 改完配置后,重启 TS Server(命令面板搜
Restart TS server),否则 VSCode 编辑器里仍标红
路径问题最麻烦的点在于:错误现象一样,但根因可能分布在 Code Runner、launch.json、tsconfig、系统 PATH 四个完全独立的地方——查的时候得一层层排除,不能只盯着代码里的字符串。











