预提交挂钩失败

Posted

技术标签:

【中文标题】预提交挂钩失败【英文标题】:Pre Commit Hook fails 【发布时间】:2019-06-02 16:38:06 【问题描述】:

我正在为我的新项目使用 NestJs

我正在使用此命令添加所有文件。 git add .

当我在添加所有文件后提交时,husky 阻止提交并向我显示此错误。

[文件路径]/.spec.ts' 不包含在项目中。

husky > pre-commit hook 失败(添加 --no-verify 绕过)

我隐式添加了该文件,但它仍然向我抛出该错误。

我的 tsconfig.json 文件


  "compilerOptions": 
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "allowSyntheticDefaultImports": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "allowJs": true,
    "outDir": "./dist",
    "baseUrl": "./src",
    "lib": ["dom", "es2018", "esnext"]
  ,
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]

这就是我在 package.json 文件中添加 husky 命令的方式

 "scripts": 
    "lint": "tslint -p tsconfig.json -c tslint.json",
  ,


"husky": 
    "hooks": 
      "pre-commit": "lint-staged",
      "post-commit": "git push origin HEAD"
    
  ,
  "lint-staged": 
    "*.ts": [
      "tslint -p tsconfig.json -c tslint.json",
      "git add"
    ]
  ,

【问题讨论】:

您是否在pre-commit 挂钩中运行lint-staged 命令并期望它们更改将要提交的内容? 我用这个解决方案解决了我的问题***.com/a/63948896/1862590 【参考方案1】:

如果您使用的是 Windows 操作系统,那么将包含在您的 package.json 中的 hooks 脚本应该 是下面这种形式

"husky": 
    "hooks": 
      "pre-push": "set CI=true&&npm test"
    
  ,

对于其他操作系统使用下面的sn-p

 "husky": 
 "hooks": 
 "pre-push": "CI=true npm test",

更多信息: https://facebook.github.io/create-react-app/docs/running-tests#on-your-own-environment

【讨论】:

【参考方案2】:

可能是因为您的 tsconfig.json 文件中的 exclude 属性中有 "**/*.spec.ts" 作为值,因此您的预提交挂钩失败了吗?

你能像这样编辑文件并测试它吗:


  "compilerOptions": 
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "allowSyntheticDefaultImports": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "allowJs": true,
    "outDir": "./dist",
    "baseUrl": "./src",
    "lib": ["dom", "es2018", "esnext"]
  ,
  "include": ["src/**/*"],
  "exclude": ["node_modules"]

【讨论】:

以上是关于预提交挂钩失败的主要内容,如果未能解决你的问题,请参考以下文章

与 lint-staged 一起使用时,预提交规则失败

SVN 的 CPP 检查预提交挂钩

使用 Husky 时出现预提交错误“找不到模块 - npx-cli.js”

Git 预提交挂钩:更改/添加的文件

预提交/挂钩:没有这样的文件或目录

IntelliJ IDEA 中的预提交挂钩