🍣

huskyを使っているプロジェクトでVSCodeのGUIからコミットしようとしたときにエラーが出た

2024/01/19に公開

タイトル通りでこのアラートが出た。

コマンド出力を表示するとこちらが出ていた。

> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file -
Volta error: Node is not available.

To run any Node command, first set a default version using `volta install node`
Error details written to /Users/.volta/log/volta-error-2024-01-19_09_31_46.067.log
husky - pre-commit hook exited with code 126 (error)

nodenvでnodeのバージョン管理をしていた。huskyはvoltaを使おうとしてエラーが出ていた模様。なのでvoltaでnodeのバージョンを指定してみたら下記エラーが出た。

> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file -
Internal Error: hoge@workspace:.: This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile
    at $b.getCandidates (/Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:205:8149)
    at vd.getCandidates (/Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:141:1311)
    at /Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:210:8409
    at Wy (/Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:140:53920)
    at ke (/Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:210:8389)
    at async Promise.allSettled (index 0)
    at async Uc (/Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:140:53248)
    at async /Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:210:9140
    at async Qi.startProgressPromise (/Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:140:137288)
    at async St.resolveEverything (/Users/.volta/tools/image/yarn/4.0.2/bin/yarn.js:210:7138)
husky - pre-commit hook exited with code 1 (error)

公式の解消法

公式で解消法があったのでこちらを参考にhuskyでもnodenvを使うようにしてみる。
https://typicode.github.io/husky/troubleshooting.html#command-not-found

そして~/.huskyrcを下記のようにすると解消できた🎉

# Export nodenv path
export PATH="/opt/homebrew/bin/:$PATH"

# Initialize nodenv
eval "$(nodenv init -)"

# Use .node-version file to set node version
if [ -f ".node-version" ]; then
  nodenv local
fi

Discussion