我正在开发一个依赖 Husky 的项目。 当我尝试在 GitHub Desktop 上提交更改或切换分支时,出现此错误:
2022-11-16T12:18:08.885Z - error: [ui] `git commit -F -` exited with an unexpected code: 1.
stderr:
/c/Users/user/AppData/Roaming/npm/yarn: line 5: cygpath: command not found
node:internal/modules/cjs/loader:988
throw err;
^
Error: Cannot find module 'C:\Users\user\AppData\Local\GitHubDesktop\app-3.1.2\resources\app\git\node_modules\yarn\bin\yarn.js'
at Module._resolveFilename (node:internal/modules/cjs/loader:985:15)
at Module._load (node:internal/modules/cjs/loader:833:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Node.js v18.10.0
husky - pre-commit hook exited with code 1 (error)
操作系统:Windows 10 专业版
GitHub Desktop:版本 3.1.2
Git:版本 2.38.0.windows.1
如果我使用 Powershell 中的 git,一切正常。
所以问题是,没有
C:\Users\user\AppData\Local\GitHubDesktop\app-3.1.2\resources\app\git\node_modules\yarn\bin\yarn.js
我的第一个假设是
git
文件夹中没有初始化的npm。让我们检查一下:
1- 打开 Powershell
2- 输入
cd C:\Users\user\AppData\Local\GitHubDesktop\app-3.1.2\resources\app\git
设置目录 explorer .
在文件资源管理器中查看文件夹
所以我们看不到
node_modules
、package.json
或 package-lock.json
。这意味着 npm 没有在当前目录中初始化。
添加缺失的
...\git\node_modules\yarn\bin\yarn.js
:
1- 运行
npm init
初始化目录中的 npm。 npm i yarn
将 yarn 依赖项添加到当前目录。
这样,我们就添加了缺失的
...\git\node_modules\yarn\bin\yarn.js
文件。 接受的答案有效,但每次更新 GitHub 后您都需要重复它,因为路径会改变(根据版本名称)。 这里的关键是
cygpath: command not found
。 cygpath 随 Git 一起提供,位于 C:\Program Files\Git\usr 中。将其添加到 PATH 中,问题将得到永久解决。
对于我的情况(Windows 10),我可以通过将包含 cygpath.exe 的 C:\Program Files\Git\usr 添加到我的 PATH 环境变量来解决它。