Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

461
Vistas
nodejs lee el directorio de forma recursiva, obtiene las rutas de los archivos y luego usa las rutas para copiar los archivos a otro directorio

uso recursive-readdir para leer un directorio y sus subdirectorios como este:

 const fse = require('fs-extra') const recursive = require('recursive-readdir'); const inputFolder = './input'; const files = await recursive(inputFolder)

luego filtro los archivos obtenidos de esta manera:

 const fileteredFiles = files.filter((f) => f.includes('.gif'));

i console.log(filteredFiles) y este es el resultado:

 [ 'input/background/black.gif', 'input/background/grey.gif',]

ahora quiero copiar black.gif y grey.gif a otro directorio, probé esto:

 fse.copyFileSync(fileteredFiles, 'outputDir')

me sale este error:

 TypeError [ERR_INVALID_ARG_TYPE]: The "src" argument must be one of type string, Buffer, or URL. Received type object at Object.copyFileSync (fs.js:1719:3)

así que indíqueme la forma correcta de obtener archivos filtrados y copiarlos en otro directorio.

cualquier ayuda sería muy apreciada.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Leíste el mensaje de error?

 TypeError [ERR_INVALID_ARG_TYPE]: The "src" argument must be one of type string, Buffer, or URL. Received type object
 at Object.copyFileSync (fs.js:1719:3)

Está pasando una lista/matriz de cadenas a fse.fileCopySync() , en lugar de una sola cadena. Prueba algo como:

 for (const fn of filterFiles) { fse.copyFileSync( fn , 'outputdir' ); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

No está utilizando fs.copyFileSync correctamente de dos maneras distintas:

  1. El primer argumento de fs.copyFileSync() debe ser la ruta del archivo de origen. Está intentando pasar una serie de rutas de archivos. Así no es como funciona. Debe llamar a fs.copyFileSync() para UN archivo individual.

  2. El segundo argumento de fs.copyFileSync() debe ser la ruta del archivo de destino, NO una ruta de directorio.

Tenga en cuenta que incluso si intenta usar la versión fs-extra llamada fs.copySync() , dice esto:

si src es un archivo, dest no puede ser un directorio

Por lo tanto, para corregir su uso de fs.copyFileSync() , debe llamarlo para cada archivo que desee copiar y debe crear la ruta del archivo de destino adecuada (y no pasar solo el directorio de destino).

Nota: Se agregó al nodo v16 una interfaz experimental para copiar varios archivos de una ubicación a otra con fs.cpSync() , fs.cp() o fs.promises.cp() . También puede probar esa nueva interfaz, ya que hará una copia recursiva por usted y ofrece una función de filtro para que pueda restringirla solo a archivos GIF si lo desea.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda