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

husky pre-commit中运行yarn/npm test键盘输入无响应如何解决

问题根因

默认react-scripts test在本地非CI环境下会启动Jest的监听交互模式,该模式依赖控制台TTY交互通道传递按键输入。而husky钩子运行时默认不会分配交互TTY,导致按键输入无法被jest进程捕获,只会直接打印到控制台,无法触发对应操作。

解决方案

根据使用场景选择对应配置即可:

场景1:pre-commit阶段无需交互,跑完测试直接判断是否放行提交(推荐)

直接修改husky的pre-commit钩子脚本,给test命令添加关闭监听模式的参数,修改后的完整脚本如下:

. "$(dirname "$0")/_/husky.sh"

# 关闭监听模式,直接全量运行测试
yarn test --watchAll=false

如果希望只跑当前提交改动关联的测试用例,提升执行效率,可以把命令替换为:

yarn test --onlyChanged

如果需要更严格的CI兼容执行逻辑,可以添加--ci参数:

yarn test --ci --watchAll=false

场景2:需要在pre-commit阶段保留Jest交互能力

如果确实需要在钩子运行时手动选择测试执行策略,可以手动给jest进程分配交互终端,修改pre-commit脚本如下:

. "$(dirname "$0")/_/husky.sh"

# 强制分配交互终端给jest进程
exec < /dev/tty
yarn test

注意:该方案仅适合本地开发使用,CI环境没有/dev/tty设备会执行报错,不建议在需要CI执行的项目中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:03