Falta pouco!

0 dias

0 horas

0 min

0 seg

1
resposta

[Dúvida] Dúvida sobre prompt() no Node.js

Olá instrutores, tudo bem?

Estou com uma dúvida de ambiente ao tentar rodar um exercício no Node.js e gostaria da ajuda de vocês, além de uma revisão no meu código final.

Eu tentei utilizar o comando prompt() na linha 7 da minha resolução abaixo:

let saldo = 0
let deposito
let saque
let operacao

saldo = parseFloat(prompt('Informe o seu saldo: ')) // Linha 7 (Dúvida aqui)
operacao = prompt('Informe a operação que será feita para consultar o saldo: saque ou deposito: ')

if (operacao.toLowerCase() === 'saque') {
    saque = parseFloat(prompt('Digite o seu saque: '))
    saldo = saldo - saque
    console.log(`Seu saldo é: ${saldo}`)

}
else if (operacao.toLowerCase() === 'deposito'){
    deposito = parseFloat(prompt('Digite o seu deposito: '))
    saldo = saldo + deposito
    console.log(`Seu saldo é: ${saldo}`)
}
else {
    console.log('Operação inválida. Por favor, digite "saque" ou "deposito".')
}

O Node.js "reclamou" que a função prompt() não existe, e aprendi que ela é exclusiva do navegador.

Minha principal dúvida é: Para aceitar entrada de dados no Node.js, a solução seria realmente instalar uma biblioteca externa, como o readline-sync (e usar o método question()), ou existe um método nativo mais simples recomendado para este tipo de exercício?

Agradeço se puderem confirmar essa informação e também dar uma olhadinha na lógica do meu código acima, por gentileza ☺️

Obrigada pela atenção!

1 resposta

Olá T, tudo bem?

No ambiente Node.js, a função prompt() realmente não está disponível, pois ela é específica para navegadores. Para aceitar entradas de dados no Node.js, você pode usar o módulo nativo readline ou optar por bibliotecas externas como readline-sync, que simplificam o processo. Vou te mostrar como usar o módulo nativo readline:

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let saldo = 0;
let deposito;
let saque;
let operacao;

rl.question('Informe o seu saldo: ', (inputSaldo) => {
    saldo = parseFloat(inputSaldo);

    rl.question('Informe a operação que será feita para consultar o saldo: saque ou deposito: ', (inputOperacao) => {
        operacao = inputOperacao.toLowerCase();

        if (operacao === 'saque') {
            rl.question('Digite o seu saque: ', (inputSaque) => {
                saque = parseFloat(inputSaque);
                saldo = saldo - saque;
                console.log(`Seu saldo é: ${saldo}`);
                rl.close();
            });
        } else if (operacao === 'deposito') {
            rl.question('Digite o seu deposito: ', (inputDeposito) => {
                deposito = parseFloat(inputDeposito);
                saldo = saldo + deposito;
                console.log(`Seu saldo é: ${saldo}`);
                rl.close();
            });
        } else {
            console.log('Operação inválida. Por favor, digite "saque" ou "deposito".');
            rl.close();
        }
    });
});

Este código usa o módulo readline para ler entradas do usuário no terminal, de forma semelhante ao prompt() no navegador.

Quanto à lógica do seu código, ela parece correta! Você está verificando a operação e ajustando o saldo de acordo com a entrada do usuário. Apenas fique atento ao tratamento de erros, como entradas não numéricas, que podem causar problemas ao usar parseFloat.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.