Warm tip: This article is reproduced from serverfault.com, please click

stdin-Node.js readline模块:停止重新打印刚读取的行

(stdin - Node.js readline module: stop reprinting the line just read)

发布于 2020-12-03 06:07:06

我正在使用readline节点(12)中模块接受用户输入,如下所示:

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数组中,但令人讨厌的是,该过程正在打印出刚刚读取的每一行:

在此处输入图片说明

我如何摆脱多余的行(没有>提示的行)

Questioner
BeetleJuice
Viewed
0
BeetleJuice 2020-12-04 03:11:57

我通过更改脚本运行方式来修复它。之前,我使用nodemon过node的-r ts-node/register选项。当我转而使用ts-node-dev来执行脚本时,问题就消失了。

还请注意,process.stdin.isTTY现在已正确设置了它,而之前却是未定义的(请看下图的第一行,与原始文章中的第一行相比)

在此处输入图片说明

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