是否可以推送文本以提示输入?
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);
我正在使用提示模块,节点版本12.4.0
我想知道 pos 是否可以将字符串推送到 prompt.get()
以下脚本显示一个(双)"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);