You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js执行fs.copyFile操作报EPERM操作不允许错误如何解决

你遇到的Error: EPERM: operation not permitted, copyfile报错,核心原因是fs.copyFile的第二个入参要求是目标文件的完整路径,你当前传入的是目标文件夹路径,系统无法直接将文件写入到文件夹路径上,因此触发权限类报错。按照以下步骤修复即可:

修复步骤

  1. 补全目标文件路径
    需要在目标文件夹路径后拼接要保存的文件名,推荐优先使用Node.js内置的path模块拼接路径,避免不同操作系统的路径分隔符兼容问题:
const path = require('path')
// 替换原有路径拼接逻辑
const imgPath = path.join(__dirname, 'img', imgSrc)
const destinationFolder = path.join(__dirname, 'projects', `${circuitName}-${fuseName}`, poleNumber)
// 生成完整的目标文件路径
const destinationPath = path.join(destinationFolder, imgSrc)
  1. 提前创建目标层级目录
    fs.copyFile不会自动创建不存在的父级目录,你需要先判断目标文件夹是否存在,不存在就先创建,示例逻辑:
fs.exists(imgPath, (exists) => {
  if(!exists) return console.log('file does not exist')
  // 先创建目标目录,recursive设为true会自动创建所有不存在的父级目录
  fs.mkdir(destinationFolder, { recursive: true }, (err) => {
    if(err) return console.log('Failed to create destination folder', err)
    fs.copyFile(imgPath, destinationPath, (err) => {
      if(err){
        console.log('Error. Unable to transfer file.', err)
      }else{
        console.log(`Success - File copied: ${imgSrc}`)
      }
    })
  })
})
  1. 路径拼写校验
    检查你代码里的目标目录拼写是否和实际文件夹一致,你当前代码中目标路径写的是/projects/,但从你给出的文件夹结构来看目标目录名为project,拼写不匹配也会触发异常。

  2. 权限校验
    如果上述修改完成后仍有报错,检查运行Node进程的账号对projects目录是否有读写权限:

  • Windows系统:以管理员身份运行终端后再启动服务
  • Linux/Mac系统:执行chmod -R 755 ./server/projects为目录开通读写权限

内容的提问来源于stack exchange,提问作者night_programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:48:02