1
resposta

Pratica da Aula Explorando Módulos no Js

Eu fiz o projeto dessa aula porem na hora de rodar o código ele exibi a primeira caixa de pergunta depois nao exibe mais nada.
Já tentei trocar meu terminal para Bash como o da aula mas mesmo assim o erro persiste .
Aqui o código como eu montei:

import { createInterface } from 'node:readline/promises'; 
import { soma, subtracao } from "./operacoesMatematicas.js";

const pergunta = createInterface ({
    input: process.stdin,
    output: process.stdout
})



pergunta.question('Digite o primeiro número\n', (numero1) => {

    pergunta.question('Digite a operação\n+: soma\n-: subtração\n>', (operacao) => {
    
        pergunta.question('Digite o segundo número\n', (numero2) => {
                    
            const num1 = Number(numero1);
            const num2 = Number(numero2);
        
            let resultado = null;
        
            if(operacao == '+'){
                resultado = soma(num1, num2);
       
        }else if(operacao  ==  '-'){ 
            resultado = subtracao(num1, num2);
        
            }else{
                console.log('Operação ínvalida...');
            }
           
                if(resultado != null){
                    console.log('O resultado da operação é: ', resultado);
                }
        
            pergunta.close();
        })
    })
})
1 resposta

Oi, Gabriel!

O problema tá no jeito que você importou o readline. Na aula, a gente usou assim:

const readline = require('readline');

Mas você usou:

import { createInterface } from 'node:readline/promises';

São duas formas diferentes de trazer código de fora, e a que você usou espera um estilo de código diferente do que você escreveu.

O fix

Troca as primeiras linhas do seu arquivo pra ficar assim:

const readline = require('readline');
const { soma, subtracao } = require('./operacoesMatematicas.js');

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

O resto do código pode continuar como tá. Só essas linhas do começo que precisam mudar.

"Mas Vinny, quero continuar usando ES Modules — como eu faço?"

Pode também! Só precisa ajustar:

No código, troca o import pra versão sem /promises:

import { createInterface } from 'readline'; // ou node:readline
import { soma, subtracao } from './operacoesMatematicas.js';

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

O resto do seu código continua igual — com os callbacks funcionando normal.

O erro original aconteceu porque você importou de node:readline/promises, e essa versão espera await em vez de callbacks. A versão sem /promises funciona do jeito que você escreveu.