Fiz a mesma lógica que a prof, porém, no meu index não lê apenas um arquivo e sim arquivos que tem dentro de um diretório. Não consegui encontrar uma solução para esse erro TypeError [ERR_INVALID_URL]: Invalid URL
meu index:
const fs = require('fs');
const path = require('path');
console.log('index teste')
function extractLinks(text){
const regex = /\[([^\]]*)\]\((https?:\/\/[^$#\s].[^\s]*)\)/gm;
const resultArray = [];
let sequencePrint;
while((sequencePrint = regex.exec(text)) !== null){
resultArray.push({ [sequencePrint[1]]: sequencePrint[2] })
}
return resultArray.length === 0 ? 'não há links' : resultArray;
}
function showError(erro){
throw Error (chalk.red(erro.code, 'o diretorio não possui arquivos'))
}
async function getFile(filePath){
const absolutPath = path.join(__dirname, '/diretorio');
// console.log(absolutPath)
const enconding = 'utf-8';
const files = await fs.promises.readdir(absolutPath, { enconding });
try {
const result = Promise.all(files.map(async (file) => {
const localFile = `${absolutPath}/${file}`;
// console.log(localFile)
const text = await fs.promises.readFile(localFile, enconding);
return extractLinks(text);
}))
return result;
} catch(erro){
return showError(erro);
}
}
module.exports = getFile;
Arquivo cli.js:
const chalk = require('chalk');
const getFile = require('./index');
const validateURLs = require('./http-validation')
const filePath = process.argv;
console.log(filePath)
async function processText(relativePath){
const ResultLinksArray = await getFile(relativePath[2]);
if(filePath[3] === 'validar'){
console.log(chalk.yellow('lista dos links validados'), await validateURLs(ResultLinksArray));
} else{
console.log(chalk.yellow('listas dos links'), ResultLinksArray);
}
}
processText(filePath);
Arquivo http-validation:
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));
function handlingErrors(erro){
throw new Error(erro.message);
}
async function statusCheck(arrayURLs){
try{
const arrayStatusLinks = await Promise.all(arrayURLs.map(async url => {
const res = await fetch(url);
return `${res.status} - ${res.statusText}`;
}))
return arrayStatusLinks;
}catch(erro){
return handlingErrors(erro);
}
}
function generateArrayURLs(arrayURLs){
return arrayURLs.map(objectLink => Object.values(objectLink).join());
}
async function validateURLs(arrayURLs){
const links = generateArrayURLs(arrayURLs);
const statusLinks = await statusCheck(links);
const resultValidateURLs = arrayURLs.map((object, indice) => ({
...object,
status: statusLinks[indice],
}))
return resultValidateURLs;
}
module.exports = validateURLs;
Alguém sabe onde errei?