执行git commit时nx format:write --uncommitted与eslint --fix无输出失败
解决Git Commit时nx format与ESLint任务崩溃问题
问题核心
执行git commit时,nx format:write --uncommitted因SIGSEGV(段错误)无输出失败,同时eslint --fix任务无响应终止;lint-staged流程跳过.lintstagedrc.json匹配检查,相关格式任务直接终止,最终提交回滚至原始状态。
排查与修复步骤
1. 单独测试命令定位问题源
脱离commit流程,单独执行命令确认问题触发点:
- 执行
nx format:write --uncommitted,观察是否直接崩溃,判断NX格式工具本身是否异常。 - 执行
eslint --fix {apps, libs}/**/*.{ts, tsx, js, jsx},检查ESLint能否正常运行,是否存在特定文件导致崩溃。
2. 清理缓存
- 清理NX缓存:
nx reset - 清理ESLint缓存:删除项目根目录下的
.eslintcache文件,或执行eslint --clear-cache
3. 检查依赖版本兼容性
SIGSEGV多由底层依赖不兼容导致:
- 确认Node.js版本符合项目要求(查看
package.json的engines字段),用nvm/nvs切换到指定版本。 - 确保
@nx/*系列包与@nx/eslint-plugin等插件为同一大版本,避免跨版本混用。 - 重新安装依赖:
npm install或yarn install,修复可能的依赖损坏。
4. 排查单个文件的异常
若单独执行命令仅在包含特定文件时崩溃,说明该文件存在格式/语法问题:
- 逐个检查暂存文件,手动修复明显的语法错误(如未闭合括号、无效TS类型)。
- 对单个文件执行
nx format:write <file-path>和eslint --fix <file-path>,定位出问题的文件。
5. 调整lint-staged配置
检查.lintstagedrc.json或package.json中的lint-staged配置:
- 确认
{apps, libs}/**/*.{ts, tsx, js, jsx}能匹配到暂存文件,避免路径错误导致任务无目标。 - 暂时简化配置,比如只针对单个文件类型执行任务,逐步排查配置中的通配符或任务顺序问题。
6. 临时紧急提交(仅应急)
若需紧急提交代码,可临时跳过检查:
git commit --no-verify
注意:这是临时方案,后续必须修复根源问题
内容的提问来源于stack exchange,提问作者Bhavana
相关产品推荐
相关产品推荐

