我有一个这样的函数:
const runInteractive = (rows, dups) => {
const keys = new Set(dups);
const questions = _(rows)
.filter(row => keys.has(row.key))
.groupBy(row => row.key)
.map((rows, key) => ({
type: 'list',
name: key.replace('.', ','),
message: `Pick a value for ${key}`,
choices: rows.map(row => ({ name: row.value, value: row, short: '✔' }))
}))
.value();
return inquirer
.prompt(questions)
.then(answers => _.sortBy(rows.filter(row => !keys.has(row.key)).concat(Object.values(answers)), row => row.key));
};
我从shebang节点脚本中调用它。
该过程显示询问者提示,然后死亡。
如何让用户输入输入保持活动状态?
我知道这个问题很老了,但经过几天的努力,我想明白了,我想我会发布答案
至少在macOS/linux上,你可以做这样的事情-
#!/bin/bash
exec < /dev/tty;
node /path/to/node/file.js
其中file.js
是您的Inquirer提示所在的位置。当您调用exec < /dev/tty
时,即使您的脚本是在没有TTY的上下文中执行的,您是否也能够捕获用户输入。