Node.js readline 模块:停止转载刚刚读取的行

Node.js readline module: stop reprinting the line just read

我在节点 (12) 中使用 readline 模块来接受用户输入:

import * as readline from "readline";

process.stdin.setEncoding('utf-8');
console.log("input is a TTY?",process.stdin.isTTY);

const rl = readline.createInterface({input: process.stdin, output: process.stdout, prompt: '> '});
rl.prompt();
rl.on('line' ,inputLine => { inputStringLines.push(inputLine); rl.prompt(); });
rl.on('close',() => { console.log('input has closed'); main(); });

这些行已正确捕获到我的 inputStringLines 数组中,但令人讨厌的是,该过程正在打印出刚刚读取的每一行:

如何去掉多余的行(没有 > 提示符的行)

我通过更改 运行 我的脚本的方式修复了它。之前,我将 nodemon 与节点的 -r ts-node/register 选项一起使用。当我切换到使用 ts-node-dev 来执行脚本时,问题就消失了。

另请注意 process.stdin.isTTY 现在已正确设置,而之前未定义(查看下图中的第一行,与原始 post 对比)

仍然不知道根本原因,但我很高兴继续前进。