15

Husky用 4.0.0 改变了它的路径处理在此更改之后,它会在从 Visual Studio提交时引发以下错误:

husky > pre-commit (node v12.12.0)/c/path/to/repo/node_modules/.bin/lint-staged: 
line 5: cygpath: command not foundinternal/modules/cjs/loader.js:797 throw err;

^Error: Cannot find module 'C:\lint-staged\bin\lint-staged.js' 
 at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15) 
 at Function.Module._load (internal/modules/cjs/loader.js:687:27)
 at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10) 
 at internal/main /run_main_module.js:17:11 { code: 'MODULE_NOT_FOUND', requireStack: []}

husky > pre-commit hook failed 
(add --no-verify to bypass)

但是,当从 CLI提交时,它按预期工作。鉴于错误消息具有'C:\lint-staged\bin\lint-staged.js'文件路径,我假设 Visual Studio 以不同方式处理路径。

我正在尝试从 Visual Studio 中找到一种方法来完成这项工作。我在企业环境中,所以我希望有一种方法可以将此配置包含在存储库中(而不是需要手动本地设置)。

我的 package.json 中包含 husky 配置

...
"husky":{
    "hooks":{ "pre-commit": "lint-staged"}
},
"lint-staged":{
    "!(*.min.*)js": "eslint --fix"
},
...

我目前正在使用:
nvm 1.1.7 和 Node 12.16.1 husky
4.2.5
lint-staged 10.1.3
visual studio 2019

4

4 回答 4

26

我找到了一个解决方案,尽管它不是一个完整的解释。简单的解决方法是像这样修改你的 husky 命令:

...
"husky":{
    "hooks":{ "pre-commit": "npx lint-staged"}
},
...

指定 NPM 命令可纠正路径问题。我在 lint-staged github 中找到了对 2018 年问题的回应中的建议,来源在这里

编辑:我只是想提请注意 TetraDev 的评论。它们是正确的,您必须git add .在任何代码更改任务(linting、prettier 等)之后包含在 lint 暂存任务中,以便将所做的更改应用于您的提交。

于 2020-04-14T15:16:57.943 回答
0

我有一个类似的错误,这是由相同的预提交钩子引起的,但它找不到 yarn.js:

/c/Users/xxx/AppData/Roaming/npm/yarn: line 5: cygpath: command not found
internal/modules/cjs/loader.js:968
  throw err;
  ^

Error: Cannot find module 'C:\program files (x86)\microsoft visual studio\2019\enterprise\common7\ide\commonextensions\microsoft\teamfoundation\team explorer\Git\node_modules\yarn\bin\yarn.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:965:15)
    at Function.Module._load (internal/modules/cjs/loader.js:841:27)
    at Function.executeUserEntryPoint as runMain
    at internal/main/run_main_module.js:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

不幸的是,这无济于事:

  "husky": {
    "hooks": {
      "pre-commit": "npx lint-staged"
    }
  },

我可以通过删除 pre-commit 钩子来解决这个问题,但我确实想避免这种情况。

于 2020-12-19T17:13:14.373 回答
0

vs 2019 的问题是,集成的 git 缺少cygpath.exe文件C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\usr\bin

https://developercommunity.visualstudio.com/t/Missing-cygpathexe-in-git/1393876

于 2021-04-08T13:24:01.153 回答
-1

从 VS 控制台,运行:

npm install husky --save-dev

……然后再次提交。

于 2022-02-08T16:12:50.423 回答