Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Error: ENOENT não há arquivo no diretório

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])
2 respostas

No seu caso, ao executar o comando node .\src\cli.js .\arquivos\texto.md, está ocorrendo um problema. Parece que o arquivo não está sendo encontrado e está gerando um erro. Confira se o caminho do arquivo está correto e se o arquivo "texto.md" está realmente no diretório "arquivos" dentro do diretório do seu projeto.

Se você tiver certeza de que o caminho e o arquivo estão corretos, pode ser que haja um problema no código. Verifique a função pegaArquivo no arquivo "index.js" e certifique-se de que está lidando corretamente com o caminho do arquivo.

Se continuar com problemas, poste mais detalhes ou trechos de código, e tentaremos te ajudar a resolver isso!

solução!

Acabei encontrando o erro no arquivo cli.js processaTexto(caminho[2]) o correto é processaTexto(caminho)

Isso porque eu falei "tudo igual ao projeto apresentado pela instrutuora". kkkk Falha minha!

Obrigada pela resposta.