husky: Husky pre-commit fails with code 1 (error)
Committing from vs-code Source control returns this error but the command line works fine
vscode version - 1.58.2
Command output
husky - pre-commit hook exited with code 1 (error)
pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn lint-staged
package json
{
"scripts": {
"lint-staged": "lint-staged",
"postinstall": "husky install"
},
"devDependencies":{
"husky": "^7.0.0",
"lint-staged": "^11.0.0",
}
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx}": "eslint"
},
"husky": {
"hooks": {
"pre-commit": "yarn run lint-staged"
}
}
}
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 34
- Comments: 53
Husky can prevent you from bad git commit, git push and more. If you are getting this error check your code syntax, in case if you are getting this error even your code is valid. Please use the below command.
git commit -m "message" --no-verify
from: here
or
git config --unset core.hooksPath
try to restart your vscode
This worked for me
This just disables husky for me.
This does NOT resolve the issue, but a work around to ignore the issue.
It looks like this is actually a
lint-staged
issue, specifically broken dependencies in version 11.2.4.See if you can reproduce this:
git commit
from command line also fails:yarn lint-staged
is in fact silently failing and returning exit code 1:If so, the problem should be fixed soon: https://github.com/okonet/lint-staged/issues/1032
In the meantime, pinning
lint-staged
to11.1.4
should resolve the problem for now.For me, this issue is not because of husky, but because of
lint-staged
. I resolved it by removing lint-staged. I useeslint --cache
insteadsame with vscode for me
I hope you all know that by setting
git config --unset core.hooksPath
you basically DISABLE Husky at all from codebase. So it’s NOT a fix for Husky, it’s a break of Husky (and giving control of hooks back to regular Git setup./git/hooks
folder).UPD. What actually helped me, is a silly reason - VS Code required actual restart, and OF ALL instances!!! I use multiple workspaces, so one VS Code instance restart was NOT enough. Ideally Restart PC for 200% proof.
PS. Look my last 2 comments with details troubleshooting notes here: https://github.com/okonet/lint-staged/issues/420
I just renamed from
commitlint.config.js
tocommitlint.config.cjs
It worked without any error.In my case “lint-staged” configuration was missing from
package.json
after a merge conflict was resolved. Added it back and no more issues.I realized that the right way to fix this error is not by bypassing it else your GitHub commit checks will fail when merging your branch. The best way to fix this issue is by simply making your commits the way husky understands it. For example:
git commit -m "feat: my commit message"
This solution worked for me. I hope this helps.
Me too, greate~
git config --unset core.hooksPath
git config --get core.hooksPath
git commit -m "type your comment here" --no-verify
git push origin yourbranch
these 4 lines of code are saving me
That error happened me, too. I add following line to my
package.json
, then that error was fixed."lint-staged": { "src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [ "prettier --write" ] }
This worked for me:
First I ran
npx commitlint
and I got a prompt to update commitlint. Apparently, it seemed that commitlint needed an updateAnd voila! Subsequent commits were successful
this worked for me:
create a file named “.lintstagedrc” with this inside
my current version of lint-staged is: 13.2.0
I was able to resolve this error by running each precommit command individually. Turns out my test command (
jest
) was causing the error due to an obsolete snapshot.Note that Jest seems to hide that this actually causes an error code 🤦 and instead makes it look like a warning, so if this is your problem you’ll never actually see an error code directly from Jest. That’s probably why this only appeared as an error through Husky for me, and I imagine there could be many other situations where an individual command is swallowing the error code to make it look like Husky’s fault.
It Worked for me 👍
if deleting node modules and running lint in your project can’t help try to restart your computer
In my case husky was always getting node 14. Changing nvm default version didn’t work or changing the PATH variable because the version was pinned in my .huskyrc file. I recommend you all checking that evil file.
I was having this problem and the output was complaining about “Unexpected token ‘??=’”. I’m using nvm, and this seems to be related to which version of node is loaded by default in the terminal (in this case, one which didn’t understand this operator), regardless of my config switching node version based on the presence of a
.nvmrc
file.In my case when I checked I had version 14 pinned in my path.
I was able to work around this by:
nvm alias default <desired default, e.g. lts/hydrogen>
<.nvm_path>/alias/default
insteadYour
package.json
must be an actual JSON rather than just JavaScript Object. I change the following from:to
And the issue was fixed.
This fixed my issue. Just opened a new terminal in iTerm2
I checked mine and saw that my
lint-stages
configwas not directly in the root of the package.json
You must to verify this because with this command you’re disabling commit checks
Maybe it will help someone, everything worked out for me after changing single quotes to double ones in package.json
Got the same error. My issue might be that hooks that should be run before committing or pushing have an error. eg., in my .husky/pre-commit it will run
yarn lint
before I commit. so after solving the error inyarn lint
, mine commit works.it seems from this thread that husky can have a lot of issues that cause the same vague error, this might need to be addressed
In my case when trying to commit from my IDE it would give the non-descriptive error
Unexpected identifier
, while committing from command line worked fine.It turned out my IDE used an earlier node version (6.14.4 vs 7.19.1 from my terminal), upping the version fixed this for me.