Node.js readline模块运行无响应问题求助(Windows环境)
Node.js readline模块无响应问题修复
你的代码存在几个关键问题,导致执行后无响应或报错:
- 语法错误导致Promise无法resolve:question1函数中,
rl.question的调用格式错误,把逗号放在了括号外面,使得回调函数没有被正确绑定到question方法上,Promise永远不会触发resolve,程序因此卡住。 - 未定义变量引用:question2函数里的
console.log(A temperatura em fahrenheit é ${fah}!);语句引用了question1中的局部变量fah,该变量在question2中未定义,执行到这里会抛出错误。 - 类型不匹配导致switch逻辑失效:
rl.question返回的输入是字符串类型,但switch的case使用了数字常量,无法正确匹配用户输入的内容,所有输入都会走到default分支。
以下是修正后的完整代码:
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const question1 = () => { return new Promise((resolve, reject) => { rl.question('Qual a temperatura hoje: ', (cel) => { const fah = cel * 1.8 + 32; console.log(`A temperatura em fahrenheit é ${fah}!`); resolve(); }); }) } const question2 = () => { return new Promise((resolve, reject) => { rl.question('Qual é o dia da semana em número?: ', (dia) => { switch (dia) { case '1': console.log("Domingo!"); break; case '2': console.log("Segunda!"); break; case '3': console.log("Terça"); break; case '4': console.log("Quarta"); break; case '5': console.log("Quinta"); break; case '6': console.log("Sexta!"); break; case '7': console.log("Sabado"); break; default: console.log("Dia inválido!"); break; } resolve(); }); }) } const main = async () => { await question1() await question2() // await question3() // await question4() // await question5() // await question6() // await question7() // await question8() rl.close() } main()
内容的提问来源于stack exchange,提问作者Mário Henrique
相关产品推荐
相关产品推荐

