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

retorno Lista de links: [object Object],[object Object]

estou tendo dificuldade pois ele não acessa a prorpiedade do objeto, apenas o retorna com um todo

import chalk from "chalk";
import fs from 'fs';
import pegaArquivo from "./index.js";

const rota = process.argv;

function imprimeLista(resultado) {
    console.log(chalk.blue(`Lista de links: ${resultado}`));
}

async function processaText(argumentos) {

    const caminhos = argumentos[2]

    // SE caminhos for um arquivo
    if(fs.lstatSync(caminhos).isFile()){

        const result = await pegaArquivo(caminhos);

        imprimeLista(result);
    }
    // SE caminhos for um diretório
    else if(fs.lstatSync(caminhos).isDirectory()){

        const arquivos = await fs.promises.readdir(caminhos)

        arquivos.forEach(async (nomeDeArquivo) => {

            const lista = await pegaArquivo(`${caminhos}/${nomeDeArquivo}`);

            imprimeLista(lista);
        });
        return caminhos;
    };
};

processaText(rota);

RETORNO:

PS C:\Users\caio_\Desktop\ESTUDOS\first steps with javascript\Alura\criandoUmaLibrary\src> node cli.js ../arquivos/texto.md
Lista de links: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
2 respostas

você descobriu como resolver esse problema?

solução!

Olá Caio, tudo bem?

Pelo que entendi, o resultado da execução do código está retornando um array de objetos em vez de uma lista de links como esperado. É possível que o método pegaArquivo() esteja retornando um objeto em vez de um array de links.

Para solucionar o problema, é necessário verificar o que está sendo retornado pelo método pegaArquivo(), e ajustar o código para que ele retorne um array de links. Caso o método já esteja retornando um array de links, é necessário ajustar a forma como ele é manipulado dentro da função imprimeLista() para que a lista seja exibida corretamente.

Você pode tentar: function imprimeLista(resultado) { console.log(chalk.yellow('lista de links'), resultado) }

Outra possibilidade é que o objeto esteja sendo retornado corretamente, mas na hora de imprimir na tela, ele está aparecendo como "[object Object]". Isso pode acontecer acontece porque o método "console.log()" não sabe como imprimir um objeto diretamente na tela com o template string.

Uma solução para esse problema é utilizar o método "JSON.stringify()" para converter o objeto em uma string antes de imprimir na tela. Ficaria assim:

console.log(chalk.blue(`Lista de links: ${JSON.stringify(resultado)}`));

Dessa forma, o objeto será convertido em uma string e será possível visualizar as propriedades na tela.

Espero ter ajudado e bons estudos!