現象
WSLにfish shellを入れnvmを入れた状態で、gitのコミットフックを設定してあるリポジトリで、VSCodeからGitコミットしたら次のエラーが起きました。
Git: /usr/bin/env: 'bash\r': No such file or directory
という原因が推測しにくいエラーです。
WSLからGitコマンドを実行しても同じエラーがおきます。
WSL側の設定上の問題のようです。
ledsun@MSI:~/textae►git commit -m 'feature: Don\'t scroll out the span when you create a new span and recalculate the li ne height' /usr/bin/env: 'bash\r': No such file or directory husky - pre-commit hook exited with code 127 (error)
husky - pre-commit hook
とあるので、huskyで設定してあるコミットフックの実行に失敗しています。
コミットフックの実体であるlint-stagedコマンドを単体で実行してみます。やはり失敗します。
ledsun@MSI:~/textae[1]►npx lint-staged /usr/bin/env: 'bash\r': No such file or directory
ここから理由にたどり着くのが難しいのですが、node
コマンドが使えないため起きているエラーです。
nvmで使用するNodeのデフォルトバージョンを指定していないため、WSL起動直後はnode
コマンドが使えません。
次のようにNodeのバージョンを指定します。
ledsun@MSI:~/textae[127]►nvm use latest Now using Node v17.0.1 (npm 8.1.3) ~/.local/share/nvm/v17.0.1/bin/node
lint-stagedの実行に成功します。
ledsun@MSI:~/textae►npx lint-staged ✔ Preparing... ✔ Running tasks... ✔ Applying modifications... ✔ Cleaning up...
対策
Nodeのデフォルトバージョンを指定します。
GitHub - jorgebucaran/nvm.fish: Node.js version manager lovingly made for Fish. の
set --universal nvm_default_version v12.9.1
を参考にします。 現在、入っている最新バージョンをデフォルトバージョンに指定しました。
set --universal nvm_default_version v17.0.1
VSCodeを再起動すれば、VSCodeからのGit操作も成功するようになります。
追記 2021-11-10
一回は上手く行ったのですが、いつのまにか再発しました。 なので、結局WSLに直接Node.jsをインストールすることにしました。
ledsun@MSI:~►sudo apt install -y nodejs [sudo] password for ledsun: Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: nodejs 0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded. Need to get 26.5 MB of archives. After this operation, 179 MB of additional disk space will be used. Get:1 https://deb.nodesource.com/node_17.x focal/main amd64 nodejs amd64 17.0.1-deb-1nodesource1 [26.5 MB] Fetched 26.5 MB in 2s (11.4 MB/s) Selecting previously unselected package nodejs. (Reading database ... 39537 files and directories currently installed.) Preparing to unpack .../nodejs_17.0.1-deb-1nodesource1_amd64.deb ... Unpacking nodejs (17.0.1-deb-1nodesource1) ... Setting up nodejs (17.0.1-deb-1nodesource1) ... Processing triggers for man-db (2.9.1-1) ...