Alguém poderia me ajudar? Aparentemente está tudo igual ao projeto apresentado pela instrutuora e estou tentando executar comando node .\src\cli.js .\arquivos\texto.md
e não está funcionando.
Erro apresentado:
PS C:\Users\Camicase\Documents\git\node-lib-alura> node .\src\cli.js .\arquivos\texto.md
file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/index.js:12
throw new Error(chalk.red(erro.code, 'não há arquivo no diretório'))
^
Error: ENOENT não há arquivo no diretório
at trataErro (file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/index.js:12:9)
at pegaArquivo (file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/index.js:21:5)
PS C:\Users\Camicase\Documents\git\node-lib-alura> node .\src\cli.js .\arquivos\texto.md
file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/index.js:12
PS C:\Users\Camicase\Documents\git\node-lib-alura> node .\src\cli.js .\arquivos\texto.md
file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/index.js:12
throw new Error(chalk.red(erro.code, 'não há arquivo no diretório'))
^
Error: ENOENT não há arquivo no diretório
at trataErro (file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/index.js:12:9)
at pegaArquivo (file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/index.js:21:5)
at async processaTexto (file:///C:/Users/Camicase/Documents/git/node-lib-alura/src/cli.js:7:21)
Node.js v20.10.0
arquivo index.js
import fs from 'fs'
import chalk from 'chalk'
function extraiLinks(texto) {
const regex = /\[([^[\]]*?)\]\((https?:\/\/[^\s?#.].[^\s]*)\)/gm
const capturas = [...texto.matchAll(regex)]
const resultados = capturas.map((captura) => ({ [captura[1]]: captura[2] }))
return resultados.length!== 0 ? resultados : 'não há links no arquivo'
}
function trataErro(erro) {
throw new Error(chalk.red(erro.code, 'não há arquivo no diretório'))
}
async function pegaArquivo(caminhoDoArquivo) {
try {
const ecoding = 'utf-8'
const texto = await fs.promises.readFile(caminhoDoArquivo, ecoding)
return extraiLinks(texto)
} catch (erro) {
trataErro(erro)
}
}
//promisses com then
/*function pegaArquivo(caminhoDoArquivo) {
const ecoding = 'utf-8'
fs.promises
.readFile(caminhoDoArquivo, ecoding)
.then((texto) => console.log(chalk.green(texto)))
.catch(trataErro)
}*/
/*function pegaArquivo(caminhoDoArquivo) {
const ecoding = 'utf-8'
fs.readFile(caminhoDoArquivo, ecoding, (erro, texto) => {
if (erro) {
trataErro(erro)
}
console.log(chalk.green(texto))
})
}*/
//console.log(pegaArquivo('./arquivos/texto.md'))
// \[[^[\]]*?\]
// \(https?:\/\/[^\s?#.].[^\s]*\)
export default pegaArquivo
arquivo cli.js
import pegaArquivo from "./index.js";
import chalk from "chalk";
const caminho = process.argv
async function processaTexto(caminho) {
const resultado = await pegaArquivo(caminho[2])
console.log(chalk.yellow('lista de links'), resultado)
}
processaTexto(caminho[2])