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

Node.js递归读取目录筛选gif文件后复制到新目录报错如何解决

错误原因

fse.copyFileSync() 是单文件复制接口,仅支持传入单个源文件路径(字符串/Buffer/URL类型)作为第一个参数,你传入了存储多个文件路径的数组,因此触发类型错误。

注意:你之前的代码里筛选后的数组变量名拼写为fileteredFiles,注意和后续代码的变量名保持一致,避免引用错误。

解决方法

你需要遍历筛选得到的文件路径数组,逐个执行复制操作,同时注意拼接正确的目标文件路径,避免覆盖文件。

前置依赖

需要引入Node.js内置的path模块处理路径:

const path = require('path')

同步批量复制实现

const fse = require('fs-extra')

// 先确保目标目录存在,不存在会自动递归创建
fse.ensureDirSync('./outputDir')

filteredFiles.forEach(srcFilePath => {
  // 提取源文件的文件名(含后缀)
  const fileName = path.basename(srcFilePath)
  // 拼接得到目标文件完整路径
  const destFilePath = path.join('./outputDir', fileName)
  // 执行单文件复制
  fse.copyFileSync(srcFilePath, destFilePath)
})

异步批量复制实现(推荐)

异步实现不会阻塞Node.js事件循环,适合文件数量较多的场景:

const fse = require('fs-extra')

// 异步创建目标目录
await fse.ensureDir('./outputDir')

// 并行执行所有复制任务
await Promise.all(
  filteredFiles.map(async srcFilePath => {
    const fileName = path.basename(srcFilePath)
    const destFilePath = path.join('./outputDir', fileName)
    await fse.copy(srcFilePath, destFilePath)
  })
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:06:03