首页 > 解决方案 > 在 Node.js 中退出 CRTL-D 上的 CLI

问题描述

我正在构建一个为 Web 应用程序创建起始代码的 CLI。现在我们只设置了一些示例问题的 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 时,它就停止了,没有任何消息。有没有人对如何正确退出和显示消息有任何建议?

标签: javascriptnode.jseof

解决方案


您使用的 readline 接口可能不支持 ^D。我建议使用 readline 内置模块尝试这种行为,将标准输入设置为原始模式。这样您就可以在没有信号 SIGINT(无 ctrl+C)的情况下收听“关闭”事件。您可以在节点文档上查看更多信息


推荐阅读