eperm或eacces错误源于npm缓存目录权限失控,常见于node.js安装路径含空格/中文、缓存位于onedrive等同步目录、或属主为root/系统账户;应通过npm config set cache重设至用户可写路径并验证生效。

npm缓存写入失败报EPERM或EACCES
错误里出现EPERM、EACCES、open、node_cache\_cacache\tmp这几个关键词,基本可以确定是 npm 缓存目录权限失控,不是 VSCode 本身的问题,而是当前用户对缓存路径没有写权限。常见于手动解压 Node.js 到桌面/下载目录、或安装时被杀软拦截导致目录属主异常。
- 先确认缓存位置:
npm config get cache,输出类似C:\Users\XXX\AppData\Roaming\npm-cache或/Users/xxx/.npm - 检查该路径父目录权限:Windows 上右键 → 属性 → 安全 → 确认当前用户有“修改”和“写入”权限;macOS/Linux 执行
ls -ld $(npm config get cache),确保属主是你自己,且权限含drwxr-xr-x或更宽松 - 别直接给整个
node_modules或AppData目录提权——这会污染系统级权限链,后续npm update可能彻底失败
重设npm缓存路径到用户可写目录
最稳妥的做法是把缓存挪到明确归属你自己的路径,避开系统保护区域(如 C:\Program Files、/usr/local、OneDrive 同步目录)。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- Windows:运行
npm config set cache "%USERPROFILE%\AppData\Local\npm-cache",然后手动删掉旧缓存目录(如%APPDATA%\npm-cache) - macOS/Linux:运行
npm config set cache ~/.npm-cache,再执行mkdir -p ~/.npm-cache并chown -R $USER: ~/.npm-cache - 验证是否生效:
npm config get cache应返回新路径;接着跑一次npm install lodash --save-dev,观察是否不再报EPERM
Node.js安装路径含空格或中文导致缓存失效
VSCode 的 js-debug 调试器和 npm 内部路径解析对空格、中文极其敏感。哪怕只是 C:\Program Files\nodejs 这种带空格的路径,也可能让 npm cache verify 静默失败,或在 _cacache 创建临时文件时触发 EPERM。
- 检查
which node(macOS/Linux)或where node(Windows),确认路径不含空格、中文、括号 - 如果来自官网 .msi/.pkg 安装,默认路径是安全的;如果是手动解压到
Downloads或桌面,请剪切到C:\dev\nodejs(Windows)或~/bin/node(macOS/Linux),并更新PATH - 重启 VSCode 终端(关掉所有
Ctrl+Shift+`面板再新建),否则旧 shell 环境仍会引用错误路径
OneDrive/腾讯微云等同步目录干扰缓存写入
项目或缓存目录若落在 OneDrive、钉钉文档、iCloud Drive 等实时同步路径下,文件句柄可能被同步客户端锁住,npm 尝试写 _cacache\tmp 时就会卡住或报 operation not permitted,现象和权限错误一模一样,但改权限毫无用处。
- 执行
pwd确认 VSCode 终端当前路径不在C:\Users\XXX\OneDrive、C:\Users\XXX\Downloads、/Users/xxx/Library/Mobile Documents等目录内 - 把项目移到干净路径(如
D:\projects或~/workspace),再重新npm install - 如果必须用同步盘,关闭对应客户端的“文件按需同步”或“智能同步”,或在同步设置中排除
node_modules和npm-cache
npm cache clean --force 永远清不干净。










