当从节点shebang调用时,保持查询进程处于活动状态



我有一个这样的函数:

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的上下文中执行的,您是否也能够捕获用户输入。

最新更新