You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用enquirer npm选择模式后无法处理标准输入的解决方案咨询

问题原因

enquirer 的选择交互组件执行完成后会自动暂停标准输入流(process.stdin),同时移除自身绑定的事件监听,但不会主动恢复流的可读状态,因此后续绑定的按键监听无法收到输入事件,程序没有等待的事件就会直接退出。

修复方案

只需要在进入练习模式之前,先清空 enquirer 残留的事件监听、恢复标准输入流即可,修改代码中 prompt.run() 的 then 逻辑:

prompt.run()
  .then(answer => {
    switch (answer) {
      case this.practiceMode:
        // 新增以下两行修复代码
        process.stdin.removeAllListeners('keypress')
        process.stdin.resume()
        new PracticeMode().start()
        break;
      case this.showPiDigits:
        break;
      case this.highScores:
        break;
    }
  })

代码说明

  • process.stdin.removeAllListeners('keypress'):清除 enquirer 绑定在标准输入上的残留按键监听,避免和自定义的监听逻辑冲突
  • process.stdin.resume():恢复被 enquirer 暂停的标准输入流,让流重新进入可读状态,绑定的按键事件才能正常触发

修改完成后运行程序,选择练习模式即可正常接收用户输入,和直接调用 PracticeMode 的效果完全一致。

内容的提问来源于stack exchange,提问作者unstoppa61e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:27:01