前書き
先日1、yarn
でパッケージをインストールした時に、「最新のyarnはv1.xx.xxだけど、あなたのyarnはv1.xx.xyですよ」的な感じのメッセージと共に、↓のコマンドが出てきました。
> curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
どうやら、これを実行すればyarn
を最新化できるとの事。最新化と言ってもパッチレベルが1上がるだけで、正直面倒くさいとも思いました。しかし親切にもコマンドまで出してくれてupdateよろしくと言われた手前、無視するのは人道に反します(言い過ぎ)。一応やっておくかと実行して。。。
そして私のyarn
は逝ってしまったのでした2
なにが起きたのか
一応環境を記載しておくと
OS : Windows10 Home
Nodist : 0.9.1
Node : v11.13.0
npm : v6.14.1
yarn : v1.22.4
な感じの一般的な(?)Windows環境です。
事象としては、gitbashでyarn
と打った後に全く入力を受付ないんですよね。
コマンドプロンプトやpowershellだと普通に動く模様。
$ yarn -v
# 何も出ず、コマンドラインが返る
$ # ← どんなにキーを叩いても何も出ない
ctrl + c
は受け付けているので、それの直後にctrl + d
でセッションを切って再度起動すれば普通に入力できるようになります。
どうやって直したか
前回修正した時のメモが残っており、それによるとyarn関連のファイル・ディレクトリを一旦全部削除して、入れ直したみたいです。今回も同じ手順を踏んでみます。
yarn
を全削除
ひとまず、今の時点で入っているyarn
関連のファイル・ディレクトリを全て削除します。ここで消し忘れがあると、再度yarn
を入れても動かなくなりました。
消したのは以下
・C:\Program Files (x86)\Nodist\bin\yarn*
にマッチする全ファイル
・C:\Program Files (x86)\Nodist\bin\node_modules\yarn
ディレクトリ
・C:\Users\username\AppData\Local\Yarn
ディレクトリ
・C:\Users\poket\.yarn\
ディレクトリ
・C:\Users\poket\.yarnrc
ファイル
3つ目はただのキャッシュで削除不要なのかもしれませんが、とりあえず消す事にします(時間がかかるから、消さなくて良いならそうしたい)。
追記(2020/10/18)
4, 5つ目を消さないと他3つを削除しても上手くいかないことから、ここが解決の糸口になりそうです
削除できたか(=yarn
コマンドが使用不可になっているか)は、powershellとbashで確認します。
$ yarn -v
yarn : 用語 'yarn' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません
。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してくださ
い。
発生場所 行:1 文字:1
+ yarn -v
+ ~~~~
+ CategoryInfo : ObjectNotFound: (yarn:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
$ yarn -v
bash: yarn: command not found
その後、npmでyarnをインストール。
バージョンを確認してみると、無事インストールが確認できます!やったね!!
$ npm i -g yarn
> yarn@1.22.10 preinstall C:\Program Files (x86)\Nodist\bin\node_modules\yarn
> :; (node ./preinstall.js > /dev/null 2>&1 || true)
C:\Program Files (x86)\Nodist\bin\yarn -> C:\Program Files (x86)\Nodist\bin\node_modules\yarn\bin\yarn.js
C:\Program Files (x86)\Nodist\bin\yarnpkg -> C:\Program Files (x86)\Nodist\bin\node_modules\yarn\bin\yarn.js
+ yarn@1.22.10
updated 1 package in 1.19s
# インストールされたか確認
$ yarn -v
1.22.10
原因は何なのか
分かりません、全くわかりません(誰か教えて)
想像ですが、msys
が絡んでそうかなーって思ってます。gitbashってchmodとか一部のコマンドが使えないんですよね。いや、それは関係ないか?いやあるのか??
兎に角、bashが使えるからといってUnix/Linux環境と同じ事ができる訳ではないって所にヒントがありそう。というのも、タイトルにもあるコマンドってUnix/Linux環境だと正しく動作するらしいんですよね。
後書き
もう二度と同じ失敗はしたくない、そして誰も二の舞になって欲しくないです。この記事が誰かのお役にたてば幸いです。
余談ですが、Windowsだとchocolatey3なるパッケージマネージャがあるらしく、それでyarnを入れるとか入れないとか4。。。
どれくらいメジャーか分からないのですが、ちょっと使って見ようかしら
参考
-
この記事を書いている時 ↩
-
ちなみに2回目のやらかしです、ごめんよ
↩
-
チョコレートがアイコンでした、何それ美味しそう
↩
-
自動翻訳っぽいサイトに載ってました(https://qastack.jp/programming/49689174/how-to-upgrade-yarn-version-using-terminal )、元記事どこ?? ↩