← 中文资源

简体中文版本

Node.js EPERM: operation not permitted

解决 Node.js 在 Windows/Linux 上写入、重命名或删除文件时出现的 EPERM 错误:文件锁、权限不足或杀毒软件拦截。

阅读英文原文

症状

写入、重命名或删除文件时抛出 EPERM: operation not permitted,而同一路径在另一个终端里却能正常操作。若问题时有时无,通常指向某个竞争进程在持有文件句柄,而非固定的权限问题。

诊断

仔细读错误整行:其中包含具体的系统调用(open、rename、unlink)和路径。在 Windows 上可用 handle.exe 或资源监视器查看占用句柄的进程;在 Linux 上检查权限位与属性:

ls -l path/to/file && lsattr path/to/file

修复

关闭占用句柄的进程、暂停杀毒软件后重试。在 Windows 上切勿直接对已存在的目标文件做 rename,应先删除再重命名:

await fs.promises.rm(target, { force: true });
await fs.promises.rename(source, target);

如果确实是权限问题,用 chown/chmod 修正属主与读写位。

验证

重新执行原命令,确认文件操作不再报 EPERM,并连续执行几次以排除间歇性句柄锁的干扰。