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

使用concurrently运行TS监听编译与Node.js程序时终端无法输入

问题原因

你遇到的输入无法响应问题,根源在于concurrently工具的特性:当它同时运行多个进程时,会默认捕获终端的标准输入(stdin),不会自动转发给你的Node.js进程,导致readline无法获取用户输入。

解决方案

以下几种方式可以解决这个问题:

1. 分开运行编译与命令

放弃用concurrently同时启动两个进程,分别打开两个终端窗口:

  • 第一个终端运行编译监听:tsc -w
  • 第二个终端运行Node程序:node dist/index.js
    这种方式最直接,Node进程能完全独立获取终端输入。

2. 配置concurrently转发stdin

修改package.json中的main脚本,给concurrently添加--stdin参数,指定将输入转发给Node进程:

"main": "concurrently --stdin \"node dist/index.js\" \"tsc -w\""

如果需要给进程命名以便更清晰管理,可以加上进程标识:

"main": "concurrently -n \"APP,TSC\" --stdin \"APP\" \"node dist/index.js\" \"tsc -w\""

其中-n给进程设置名称,--stdin "APP"指定把终端输入转发给名为APP的Node进程。

3. 改用nodemon + ts-node简化工作流

不需要手动编译到dist目录,直接用nodemon监听TypeScript文件变化,配合ts-node实时运行:
首先安装依赖:

npm install nodemon ts-node --save-dev

然后修改package.json的scripts:

"main": "nodemon --watch src --ext ts --exec ts-node src/index.ts"

这种方式既实现了代码热更新,又能让readline正常获取终端输入,无需额外处理stdin转发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:10:15