@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

WSLにいれたfish shellで使っているnvm.fishにデフォルトバージョンを設定する

現象

WSLにfish shellを入れnvmを入れた状態で、gitのコミットフックを設定してあるリポジトリで、VSCodeからGitコミットしたら次のエラーが起きました。

f:id:ledsun:20211109150534p:plain
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) ...