Skip to content

readline with /dev/tty: echos and doesn't close #21319

@coolaj86

Description

@coolaj86
  • Version: v10.2.1
  • Platform: Linux and macOS
  • Subsystem: readline

The use case is that a node script is being run from a piped bash script and so process.stdin is the pipe and /dev/tty must be used explicitly to get user input.

var readline = require('readline'); var input = require('fs').createReadStream('/dev/tty'); var rl = readline.createInterface({ input: input , output: process.stdout //, terminal: false }); rl.question("This is the prompt: ", function (response) { console.log("This is the response:", response); rl.close(); // If I don't close the input explicitly, it stays open. input.close(); });

Output:

This is the prompt: yay yay This is the response: yay 

Uncommenting terminal: false solves the issue of echoing, but creates a new problem in that it no longer treats stdout as a proper terminal.

Past issues that appear to be similar: #7965 nodejs/node-v0.x-archive#7101 https://stackoverflow.com/questions/24661774/createinterface-prints-double-in-terminal

Metadata

Metadata

Assignees

No one assigned

    Labels

    readlineIssues and PRs related to the built-in readline module.ttyIssues and PRs related to the tty subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions