githookgithookshuskygit-husky

Husky: cannot spawn .husky/commit-msg: No such file or directory


I have been working with husky for few years now. We started a new project and was sure to add husky for pre-commit and commit-msg linting. But this time we faced some issue in the windows machine.

We configured the husky in the project using a mac. When we added new dev who has a windows machine, there was error in commiting.

we have,

.husky/pre-commit

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged

.husky/commit-msg

#!/bin/sh
echo $(dirname "$0")
. "$(dirname "$0")/_/husky.sh"

npx --no-install commitlint --edit $1

.husky/_/husky.sh

#!/usr/bin/env sh
if [ -z "$husky_skip_init" ]; then
  debug () {
    if [ "$HUSKY_DEBUG" = "1" ]; then
      echo "husky (debug) - $1"
    fi
  }

  readonly hook_name="$(basename -- "$0")"
  debug "starting $hook_name..."

  if [ "$HUSKY" = "0" ]; then
    debug "HUSKY env variable is set to 0, skipping hook"
    exit 0
  fi

  if [ -f ~/.huskyrc ]; then
    debug "sourcing ~/.huskyrc"
    . ~/.huskyrc
  fi

  readonly husky_skip_init=1
  export husky_skip_init
  sh -e "$0" "$@"
  exitCode="$?"

  if [ $exitCode != 0 ]; then
    echo "husky - $hook_name hook exited with code $exitCode (error)"
  fi

  if [ $exitCode = 127 ]; then
    echo "husky - command not found in PATH=$PATH"
  fi

  exit $exitCode
fi

files inside the .husky folder. the pre-commit file works just fine without any issue. but we get following error in case of commit-msg

error: cannot spawn .husky/commit-msg: No such file or directory

it is not even getting invoked.

does anyone encountered this issue ? Is there any fix for this?

NB : Please don't suggest --no-verify as it does the opposite of what we are trying to implement.


Solution

  • I lost two day trying to fix this issue. The solution is very simple.

    Solution :

    Removed the empty line at the beginning in .husky/commit-msg.