Boa tarde! Tenho 2 problemas em relação ao retorno das urls como string no terminal: O primeiro deles é que, depois de seguir o exercício de inserir o "readdir" para ler o diretório do projeto, ao executar o "npm run cli validar" ele sempre me retorna o throw new Error customizado pra "Não há arquivo no caminho". Eu alterei o package.json pra ter o "type":"module", importei "fileURLtoPath e "dirname" e tentei também usar uma solução que encontrei no StackFlow.
O segundo problema era que antes de "readdir" ser implementado, a execução retornava apenas "{objects}" sem os valores da url como string, mas a lógica da validação funcionava.
segue o código do index.js, e também o link do meu projeto:
import chalk from 'chalk';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import {dirname} from 'path'
function extraiLinks(texto){
const regex = /\[([^\]]*)\]\((https?:\/\/[^$#\s].[^\s]*)\)/gm;
const arrayResultados = [];
let temp;
while((temp = regex.exec(texto)) !== null ){
arrayResultados.push({[temp[1]]: temp[2]})
}
return arrayResultados.length === 0 ? 'Não há links' : arrayResultados;
}
function trataErro(erro) {
throw new Error(chalk.red(erro.code, 'Não há arquivo no caminho'));
}
export default async function pegarArquivo(caminho) {
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename);
const caminhoAbsoluto = path.join(__dirname, '..', caminho);
const encoding = 'utf-8';
try{
const arquivos = await fs.promises.readdir(caminhoAbsoluto, {encoding});
const result = await Promise.all(arquivos.map(async (arquivo) => {
const localArquivo = `${caminhoAbsoluto}/${arquivo}`;
const texto = await fs.promises.readFile(localArquivo, encoding);
return extraiLinks(texto);
}));
return result;
}
catch(erro){
return trataErro(erro);
}
}
O link do meu projeto: https://drive.google.com/drive/folders/1ueOrid_MxP3hBsqYUEZitjPSD5iei27T?usp=sharing