Node.js 18.16.0引入readline后程序异常退出问题求助
问题原因及解决方法
核心原因
你遇到的字符重复、代码被逐行解析为交互式输入的问题,本质是在Node.js交互式解释器(REPL)中直接粘贴了完整脚本代码,而非通过文件执行脚本。
REPL是Node.js的交互式命令行环境,会逐行解析输入的代码;而readline模块会接管标准输入输出,和REPL的输入处理机制冲突,最终导致字符重复、程序异常退出。
解决步骤
将代码保存为独立.js文件
新建一个input-demo.js文件,把你复制的readline代码完整粘贴进去,同时修正网页代码中的HTML转义字符(比如将"替换为普通双引号")。修正后的第一个示例代码如下:
const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout, }); readline.question(`What's your name?`, name => { console.log(`Hi ${name}!`); readline.close(); });在命令行中执行该文件
打开Windows命令提示符(CMD)或PowerShell,切换到文件所在目录,执行命令:node input-demo.js验证效果
执行后会直接显示提问信息,输入内容后正常输出结果,不会进入REPL模式,也不会出现字符重复问题。
额外注意点
- 禁止在REPL中运行依赖readline的脚本:readline会接管
process.stdin,和REPL的输入机制天然冲突,必然导致异常。 - 复制网页代码时注意转义字符:网页展示的代码可能包含HTML转义符号,需替换为原生JS对应字符后再保存使用。
内容的提问来源于stack exchange,提问作者Ξένη Γήινος
相关产品推荐
相关产品推荐

