How to fix error 'not found husky-run' when committing new code?

Viewed 65400

When committing on a project that uses Husky, I get an error that says not found husky-run

I checked the package.json and it has husky as a dependency, and I can see the pre-commit hook configuration for Husky in the package.json. So I don't know what to do to fix this. Additionally, other members on my team can commit and husky works for them.

I also tried rm -rf node_modules && npm install and then committing again, but still, I get the same error.

Anyone else have ideas on how to fix this?

9 Answers

To fix this there are two methods, depending on which version of Husky you are already on.

If you're using Husky v4 or lower, do the following:

rm -rf .git/hooks
npm install

For Husky v7 or greater, do the following:

# For NPM
 npm install husky@7 --save-dev \
      && npx husky-init \
      && npm exec -- github:typicode/husky-4-to-7 --remove-v4-config

# For Yarn
 yarn add husky@7 --dev \
  && npx husky-init \
  && npm exec -- github:typicode/husky-4-to-7 --remove-v4-config
# or
 yarn add husky@7 --dev \
  && yarn dlx husky-init --yarn2 \
  && npm exec -- github:typicode/husky-4-to-7 --remove-v4-config

At this point you should be able to commit and have your hooks working again.

If anything goes wrong, please read the documentation for migration from 4 to 7.

To fix this in husky version 6 run:

yarn husky install

Do not delete .get/hooks hooks won't work. According migrating manual from 4 to 6 version :

For npm usage execute

 npm install husky@6 --save-dev \
      && npx husky-init \
      && npm exec -- github:typicode/husky-4-to-6 --remove-v4-config

For yarn usage:

 yarn add husky@6 --dev \
  && npx husky-init \
  && npm exec -- github:typicode/husky-4-to-6 --remove-v4-config

and

yarn add husky@6 --dev \
  && yarn dlx husky-init --yarn2 \
  && npm exec -- github:typicode/husky-4-to-6 --remove-v4-config

If any errors while the process you can simply revert changes by executing:

rm -rf .husky && git config --unset core.hooksPath

Explanation what's going on:

husky init sets up Git hooks and updates your package.json scripts (you may want to commit your changes to package.json before running husky init).

husky-4-to-6 creates hooks based on your husky v4 config. If --remove-v4-config is passed, previous config will be deleted (recommended).

I simply had to add a prepare script to my package.json:

"scripts": {
  ...
  "prepare": "husky install",
  ...
}

Then run yarn install or npm install and husky will be initialized. This will make sure people who check out your repo will also be able to run husky.

just a "yarn install" solved this for me

This worked for me:

add a file ~/.huskyrc if you don't have one already

  • touch ~/.huskyrc
  • open ~/.huskyrc
  • paste the following:
# ~/.huskyrc
# This loads nvm.sh and sets the correct PATH before running hook
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

just this 'yarn add husky@6 --dev' inside your terminal

If it may help anyone experiencing this issue and using yarn, uninstalling and reinstalling the husky package has fixed it in my case.

(Please check if you would need -W flag else remove it from the commands)

uninstall:

 yarn remove husky -W

install:

 yarn add husky@^4.2.5 -W //to install a specific version
 
 (or)
 
 yarn add husky -W //to install the latest version
Related