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

Vue2项目配置Prettier+husky+lint-staged失败的排查与解决

解决lint-staged报错“Failed to get staged files!”的问题

根据你提供的错误日志和配置,这个报错通常和Git命令执行异常、环境配置或仓库状态有关,以下是针对性的排查和解决步骤:

1. 检查Git暂存区状态

首先手动验证Git能否正常读取暂存文件:

  • 在项目根目录执行命令:git diff --name-only --staged
    • 如果该命令报错,说明Git暂存区存在异常,可尝试:
      1. 取消当前暂存:git reset HEAD
      2. 重新添加文件:git add .
      3. 若仍有问题,执行git fsck --full检查并修复Git仓库损坏

2. 配置lint-staged的Shell选项(Windows环境适配)

日志显示Git的shell路径为/bin/sh,Windows下可能存在Shell环境不兼容的问题:

  • 方法1:修改package.json,指定lint-staged使用Git自带的bash:
{
  "lint-staged": {
    "*.{js,vue,css,scss,json,md}": [
      "prettier --write",
      "git add"
    ]
  },
  "lint-staged:options": {
    "shell": "C:\\Program Files\\Git\\bin\\bash.exe"
  }
}
  • 方法2:直接在命令行指定shell运行:npx lint-staged --shell "C:\\Program Files\\Git\\bin\\bash.exe"

3. 排查子模块问题

日志最后执行了子模块相关命令,若项目包含子模块且配置异常,也会触发该错误:

  • 执行git submodule status查看子模块状态
    • 若子模块未初始化:执行git submodule update --init --recursive
    • 若不需要子模块,可在lint-staged配置中忽略:
{
  "lint-staged": {
    "*.{js,vue,css,scss,json,md}": [
      "prettier --write",
      "git add"
    ],
    "!**/.gitmodules": [],
    "!**/modules/**": []
  }
}

4. 版本兼容性调整

当前使用的lint-staged@15.2.11与Node.js v20.11.1可能存在兼容问题:

  • 降级lint-staged到稳定版本:
npm uninstall lint-staged && npm install lint-staged@14.0.1
  • 或升级到最新版本:npm update lint-staged

5. 重新生成Husky钩子

若钩子脚本存在权限或配置异常,可重新生成:

npx husky add .husky/pre-commit "npx lint-staged"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:40:14