Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

458
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda