Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

455
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!