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

Github Desktop使用husky prehook提交卡住 命令行运行正常问题求助

问题排查解决步骤

1. 优先排查测试命令的交互模式问题

这是最高发的原因:多数前端测试框架(如Jest、Vitest)默认在终端环境执行时如果检测到是非CI环境,会开启watch监听模式,等待用户输入指令,而Github Desktop的钩子执行上下文没有交互输入能力,就会无限卡住。
解决方案:修改pre-commit里的测试执行命令,关闭watch模式,示例:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

cd dashboard
# Jest 场景
npm run test -- --watchAll=false
# Vitest 场景
npm run test -- --run

2. 修正Node/npm的环境变量配置

你之前添加的PATH="/usr/local/bin:$PATH"只覆盖了全局安装的Node路径,如果你是通过NVM、FNM等版本管理工具安装的Node,对应的可执行文件路径不在该目录下,就会出现找不到npm命令的问题导致脚本卡住。
解决方案:

  • 先在正常执行的CLI中执行which npm,获取npm的完整路径,例如输出为/Users/yourname/.nvm/versions/node/v18.19.0/bin/npm
  • 在pre-commit脚本中要么直接使用完整路径执行npm命令,要么将对应Node版本的bin目录加入PATH:
#!/bin/sh
# 替换为你自己的Node bin目录路径
export PATH="/Users/yourname/.nvm/versions/node/v18.19.0/bin:$PATH"
. "$(dirname "$0")/_/husky.sh"

cd dashboard
npm run test

3. 校验Husky钩子路径配置

因为你的.git目录和package.json不在同一层级,需要确认Git的钩子路径配置正确:

  • 在CLI项目根目录执行git config core.hooksPath,确认输出为dashboard/.husky
  • 如果输出不符,执行以下命令修正:
    git config core.hooksPath dashboard/.husky

4. 开启脚本调试定位卡点

如果以上方案都未解决,可在pre-commit脚本开头添加调试参数,打印执行日志定位卡点:

#!/bin/sh
# 开启执行日志打印
set -x
# 遇到错误直接退出,避免无限挂住
set -e

. "$(dirname "$0")/_/husky.sh"
cd dashboard
npm run test

修改后在Github Desktop触发提交,卡住后可在Github Desktop的日志目录查看钩子执行的完整日志,定位具体卡点:

  • Mac路径:~/Library/Application Support/GitHub Desktop/logs/
  • Windows路径:%APPDATA%\GitHub Desktop\logs\

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:42:01