是否可以推送文本以提示输入?

Is it possible to push text to prompt input?

我正在使用提示模块,节点版本12.4.0
我想知道 pos 是否可以将字符串推送到 prompt.get()

的 'input field'

以下脚本显示一个(双)"prompt: "
5 秒后,它插入文本 "This is a test"
给出输入命令时,字符串未被识别为输入。
pos也无法在按回车键之前编辑字符串。
(在 5 秒前输入任何内容并按回车键,将显示输入)

最终目标:让命令从外部源发送到提示符,但让最终用户能够在输入之前修改命令。

我试过了process.stdout.write、process.stdin.write
我还尝试用 prompt.std*.write
替换 process.std*.write 答案可能是 os-specific,但我已经在 Win10 x64 和 Linux

下尝试过这段代码
const prompt = require("prompt");

function myFunc() {
  process.stdin.write("This is a test");
}
setTimeout(myFunc, 5000);

prompt.get({
  properties: {
    test: {
      description: "prompt"
    }
  }
}, (err, result)=> {
  console.log("input: "+ result.test);
});

实际结果:
~/Nodejs/temp$节点index.js
提示:提示:这是一个测试
输入:
~/Nodejs/temp$

期望的结果:
~/Nodejs/temp$节点index.js
提示:提示:这是一个测试
输入:这是一个测试
~/Nodejs/temp$

在深入了解提示模块的工作原理后,我 'solved' 自己做了这个。

prompt 在幕后使用了 readline,readline 有一个 .write 函数可以满足我的需要,将可编辑的文本发送到 prompt。

prompt本身并没有扩展这个功能,而且已经3年没有维护了,所以改用readline。

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: 'prompt> '
});

rl.prompt();

rl.on('line', (line) => {
  console.log(line);
  rl.prompt();
}).on('close', () => {
  console.log('Have a great day!');
  process.exit(0);
});


// simulate external input, and write to prompt>
function myFunc() {
  rl.write("This is a test");
}
setTimeout(myFunc, 5000);