EACCES错误源于用户无权限访问路径,需用chown修复属主并禁用sudo code;Cannot find module因TS/JS配置未识别node_modules,应补jsconfig.json并重启TS服务;source map错误系路径不匹配,须检查构建配置与webRoot;ENOTFOUND是DNS解析失败,应换DNS或配代理。

VSCode 报错 EACCES: permission denied 怎么办
这是 Linux/macOS 下启动 VSCode 或运行终端命令时最常遇到的权限错误,本质是当前用户没权限访问某个路径(比如全局 npm 模块目录、.vscode/extensions 缓存、或项目里被 root 写入的文件)。
常见触发场景:npm install -g 用 sudo 装过包后,VSCode 的 ESLint 插件调用 eslint 命令失败;或者用 sudo code . 打开过项目,导致 .vscode/ 下文件属主变成 root。
- 先查问题源头:
ls -la .vscode/ node_modules/ ~/.vscode/extensions/
看哪些目录属主不是你本人 - 修复权限(谨慎!只改自己项目的目录):
sudo chown -R $USER:$USER .vscode/
或sudo chown -R $USER:$USER ~/.vscode/extensions/
- 永远避免用
sudo code—— 正确方式是直接运行code .;如果提示“command not found”,重新从 VSCode 菜单「Shell Command: Install 'code' command in PATH」安装 - 全局 npm 包权限问题:别用
sudo npm install -g,改用npm config set prefix ~/.local,再把~/.local/bin加进$PATH
VSCode 显示 Cannot find module 'xxx' 但实际存在
这通常不是模块真丢了,而是 VSCode 的 TypeScript 语言服务或 JavaScript 语言特性没正确识别 node_modules 路径,尤其在使用 pnpm/yarn v4+ 或 monorepo 时更明显。
关键点:VSCode 默认只读取工作区根目录下的 tsconfig.json 或 jsconfig.json,不会自动向上查找,也不会理解 pnpm 的硬链接结构。
- 确认项目根目录有
jsconfig.json(JS 项目)或tsconfig.json(TS 项目),哪怕内容只是{ "compilerOptions": { "moduleResolution": "node" } } - pnpm 用户必须加
"typeAcquisition": { "enable": true }到jsconfig.json,否则类型提示全挂 - yarn v4(Berry)需启用
yarn set version stable后,在.yarnrc.yml中确保nodeLinker: pnp,并安装插件Yarn Plug'n'Play Support - 重启 TS 服务:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Restart TS server回车
调试时断点不命中,控制台报 Source map error: request failed with status 404
这是 Chrome DevTools 或 VSCode Debugger 找不到 source map 文件导致的,和 VSCode 本身关系不大,但配置全在 .vscode/launch.json 里,容易配错。
根本原因:生成的 .map 文件路径(sourceMappingURL)和实际文件位置不一致,或 Webpack/Vite 没把 map 文件输出到能被浏览器加载的位置。
- 检查构建工具输出:Vite 项目确认
vite.config.ts里build.sourcemap设为true;Webpack 确认devtool: 'source-map'且output.devtoolModuleFilenameTemplate指向可访问路径 - VSCode launch 配置中,
webRoot必须指向浏览器实际访问的根路径(比如"webRoot": "${workspaceFolder}/dist"),不是源码目录 - 如果用了反向代理(如 nginx),确保
sourceMappingURL的 URL 能被浏览器直连 —— 推荐用相对路径://# sourceMappingURL=main.js.map,而不是绝对路径或带域名的 URL - 禁用缓存调试:在
launch.json中加"runtimeArgs": ["--disable-gpu", "--auto-open-devtools-for-tabs"],方便手动验证 map 是否可访问
扩展安装失败,日志显示 ENOTFOUND 或 getaddrinfo ENOTFOUND marketplace.visualstudio.com
这不是网络打不开 Google,而是 VSCode 尝试连接微软官方 Marketplace 时 DNS 解析失败或被拦截 —— 常见于企业内网、某些国产系统(统信/UOS)、或开了代理但未配置 VSCode。
注意:ENOTFOUND 是 DNS 层错误,和 HTTP 403/502 不同;它意味着 VSCode 根本没发出去请求。
- 先测试连通性:
nslookup marketplace.visualstudio.com
,如果超时或返回空,说明系统 DNS 有问题 - 临时换 DNS:在终端执行
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
(Linux/macOS),或改系统网络设置 - 代理用户必须在 VSCode 设置里填对代理地址:
http.proxy设为http://127.0.0.1:8080(不要漏http://),并关掉http.proxyStrictSSL(如果代理用自签名证书) - 彻底离线方案:下载
.vsix文件手动安装 —— 访问 扩展页面 → 「Download Extension」→ VSCode 命令面板 → 「Extensions: Install from VSIX」
很多问题表面是 VSCode 报错,实际是环境、权限、网络或构建配置的连锁反应。盯住错误信息里的第一个关键词(比如 EACCES、ENOTFOUND、Cannot find module),顺着它查系统层、而非只翻 VSCode 设置。











