症状
写入、重命名或删除文件时抛出 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,并连续执行几次以排除间歇性句柄锁的干扰。