我正在构建一个CLI,该CLI为Web应用程序创建入门代码。现在,我们只为UI设置了一些示例问题。我们要确保当用户按下CRTL-C或CRTL-D时,程序将干净退出并显示再见消息。我能够捕捉到CRTL-C,但不适用于CRTL-D。
这里是我到目前为止的收获:
let answers = async () => {
try {
await prompt(questions)
} catch (err) {
console.log(chalk.yellow("Closing web-stater-cli..."))
}
}
answers()
但是当我按下CRTL-D时,它只是停止而没有任何消息。是否有人对如何正确退出和显示消息有任何建议?
可能您正在使用的readline接口不支持^ D。我建议使用readline内置模块尝试将此行为设置为标准模式。这样,您可以在没有信号SIGINT(没有ctrl + C)的情况下监听“关闭”事件。您可以在node doc
上查看更多信息