Skip to content

husky: command not found エラーの解決方法

問題の概要

Node.jsプロジェクトでHuskyをセットアップした際に、npm install または npm ci を実行すると以下のエラーが発生することがあります:

bash
sh: husky: command not found
npm ERR! code 127
npm ERR! command failed
npm ERR! command sh -c husky install

このエラーは、Huskyが正しくインストールされていないか、実行環境に問題があることを示しています。

主な原因

Huskyの「command not found」エラーには以下のような原因が考えられます:

  1. NODE_ENVがproductionに設定されている
  2. nvmを使用している場合のパス問題
  3. IDEやターミナルのキャッシュ問題
  4. プロダクション依存関係のみのインストール
  5. Huskyのバージョン互換性の問題

解決方法

1. NODE_ENVの確認と設定

WARNING

NODE_ENVが「production」に設定されている場合、devDependencies(Huskyを含む)がインストールされないため、このエラーが発生します。

bash
# 現在のNODE_ENVを確認
echo $NODE_ENV

# 開発環境に設定(一時的)
export NODE_ENV=development

# または特定の環境名を設定
export NODE_ENV=local

# その後、npm installを実行
npm install

2. nvmユーザー向けの設定

nvmを使用している場合は、HuskyがNode.jsの実行パスを認識できるようにする必要があります。

Husky v8以下の場合(非推奨):

bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

Husky v9以上の場合

bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# .nvmrcファイルがある場合は自動で使用
if [ -f .nvmrc ] && [ -s "$NVM_DIR/nvm.sh" ];
then
  . "$NVM_DIR/nvm.sh"
  nvm use
fi;

3. 一時的な回避策

Huskyが正常にインストールされるまで、一時的にprepareスクリプトを無効化する方法:

bash
# prepareスクリプトを一時的に空にする
npm set-script prepare ''

# 依存関係をインストール
npm install

# prepareスクリプトを再度有効化
npm set-script prepare "husky install"

# Huskyをインストール
npm run prepare

4. プロダクション環境でのインストール

本番環境でプロダクション依存関係のみをインストールする場合:

bash
# スクリプト実行をスキップしてインストール
npm ci --omit=dev --ignore-scripts

5. IDE/ターミナルの再起動

VSCode、GitHub Desktop、GitKrakenなどのIDEを使用している場合:

  1. アプリケーションを完全に終了
  2. 再起動する
  3. 再度コマンドを実行

6. Windows環境でのパス設定

WindowsでGitBashを使用している場合:

  1. 環境変数「Path」に C:\Program Files\Git\bin を追加
  2. IDEやターミナルを再起動

7. バイナリファイルの実行権限問題

Mac/Linuxで実行権限がない場合:

bash
# Huskyのバイナリファイルに実行権限を付与
chmod +x node_modules/.bin/husky
chmod +x node_modules/husky/lib/bin.js

# .huskyディレクトリ内のフックファイルにも権限付与
chmod +x .husky/*

8. バージョン互換性の問題

古いバージョンのHuskyを使用している場合:

bash
# 最新バージョンにアップグレード
npm install husky@latest --save-dev

# または特定のバージョンをインストール
npm install husky@6.0.0 --save-dev

根本的な解決策

プロジェクトの設定を恒久的に修正する方法:

json
{
  "scripts": {
    "prepare": "node_modules/.bin/husky install"
  },
  "devDependencies": {
    "husky": "^8.0.0"
  }
}
bash
# Huskyを初期化
npx husky install

# prepareスクリプトを設定
npm set-script prepare "husky install"

# プリコミットフックを追加
npx husky add .husky/pre-commit "npm test"

まとめ

Huskyの「command not found」エラーは、環境設定やインストールプロセスの問題によって発生します。最も一般的な原因はNODE_ENVの設定とnvmのパス問題です。上記の解決策を状況に応じて試してみてください。

TIP

常にHuskyの最新バージョンを使用し、公式ドキュメントに従って設定することをおすすめします。また、チーム全員が同じ開発環境設定を行うことで、この種の問題を防ぐことができます。