Multi Vitamin & Mineral

Multi Vitamin & Mineral です。プログラムに関することを書いております。

nodist の利用を諦めた! そしてアンインストールが難しい!

ここ数年 nodist という Windows 用の Node.js のバージョンを管理できるツールを使っていました。大変お世話になっておりました。が、本日をもって利用を諦めました。

nodist のアンインストールはいくつか注意点があるなぁと思い、この記事を書きました。通常のアンインストールだけでは削除されないファイルがあり、そいつが悪さをすることがありました。ので、その共有の記事になります。

結論

先にまとめを。以下を順に実施すれば万事OKでした。

  1. 設定 > アプリ> Nodist から「アンインストール」します。
  2. /c/Program Files (x86)/Nodist を削除します。
  3. /c/Users/(ユーザ名)/.npmrc を削除します。
  4. /c/Users/(ユーザ名)/AppData/Roaming/npm_cache を削除します。

これだけで事足りる人は以上でOK。以降に詳細を続けます。

nodist について(蛇足その1)

蛇足その1。

こちらの記事で紹介しています。こういう物です。

multimineral-tech.com

が、 2019年に久々の BugFix がなされたまま。もう役割は終えたのでしょうか。

諦めた理由(蛇足その2)

蛇足その2。

キッカケは、コマンド npx create-react-app ... が使えなかったことです。

$ npx create-react-app hogehoge --template typescript
...中略...
npm ERR!     C:\Users\(ユーザ名)\AppData\Roaming\npm-cache\_logs\yyyy-MM-ddTHH:mm:ss.SSSZ-debug.log
Package install failed, see above.

ログに出力された C:\Users\(ユーザ名)\AppData\Roaming\npm-cache\_logs\yyyy-MM-ddTHH:mm:ss.SSSZ-debug.log の中は以下の通りです。 error cb.apply is not a function というエラーが出力されます。

...前略...
16 error cb.apply is not a function
...後略...

この解消は意外と根深いことが分かってきました。そして nodist の利用をやめることが解消の早道と分かったところで利用を諦めました。

※ 万一 error cb.apply is not a function でググって当該ページに来た方で、 nodist を使っていない方は下記の記事をご参照してください。。。

multimineral-tech.com

nodist のアンインストール方法

本題です。

通常のアンインストールだけでは削除されないファイルがあり、困ったことにそいつが悪さをします。それが何でどう削除するかを記載します。

  1. 設定 > アプリ > Nodist から「アンインストール」します。
  2. /c/Program Files (x86)/Nodist を削除します。
  3. /c/Users/(ユーザ名)/.npmrc を削除します。
  4. /c/Users/(ユーザ名)/AppData/Roaming/npm_cache を削除します。

.npmrc が結構キッツイ感じがしました。はい。理由は以下に。

通常のアンインストール

スタートメニュー(Windows左下のやつ) > 設定(歯車アイコン) > アプリ

とたどります。「アプリと機能」から Nodist を探してアンインストールします。

ま、普通ですね。スクショを撮るまでもなかったでしょうに(一応撮った)。

通常のアンインストール
通常のアンインストール

Program Files の Nodist フォルダの削除

/c/Program Files (x86)/Nodist が残っています。今後利用されても都合が悪いので削除しておきましょう。

Program Files の Nodist フォルダの削除
Program Files の Nodist フォルダの削除

.npmrc を削除

/c/Users/(ユーザ名)/.npmrc を削除します。

このファイルが残っていると結構な害悪になります。ですので手動で必ず削除します。

.npmrc ファイルとは?

これは npm コマンドの設定の一つで、ユーザー別の設定ファイルになります。 Nodist だろうがそうじゃなかろうが、 npm コマンドを実行したときはこの設定を見に行きます。

Nodist では、アンインストール時にこのファイルを消さない場合があるようです。(条件は不明。。。そこまでは調べてないっす。)

.npmrc が害悪な理由

残っていた /c/Users/(ユーザ名)/.npmrc の中身は以下のようになっています。

prefix=C:\Program Files (x86)\Nodist\bin

npm コマンドを使った時の設定ファイルで、グローバルにインストールするときの場所の指定になります。 Nodist というキーワードが残っていますね。

例として、 npm コマンドを打つと、以下のようなエラーが発生します。ディレクトリがないぞって言われます。

$ npm -v
Error: EPERM: operation not permitted, mkdir 'C:\Program Files (x86)\Nodist'
6.14.11

前項では「Program Files の Nodist フォルダを消そう」と書きました。Nodist フォルダを消してないと、エラーが発生せずに Nodist のフォルダに npm のグローバルモジュールがインストールされ続けます。(Nodist をアンインストールしたのに!?)

これ、しばらく気づかなくないですか? 私は Nodist フォルダを消したから気づけましたが、これは厳しいですね。。。

npm_cache の削除

/c/Users/(ユーザ名)/AppData/Roaming/npm_cache を削除します。

Nodist 時代に作られたキャッシュですので、今後の軋轢が生まれないよう消しておきましょう。

node のインストール

nodist 亡き後、何をインストールすべきか。色々あるようですが、素直に Node.js を Windows10 に直付け(普通にインストール)しました。

※ WSL2 もあるし、色々工夫されている方もおられますね。が、もうサードパーティの管理ツールはしばらくはいいかな、と。。。ガチガチにやる必要があれば docker 使ったり検討しようかな、と。

ということで、公式サイトからダウンロードしてインストールするだけです。

nodejs.org

特に何もなければ LTS (Long Term Support) とある方を選びましょう。(「最新版」と書いてある方は安定はしていないよバージョンだと思って良いです。)私が実施したタイミングでは「14.15.5 LTS 推奨版」でした。

インストールが終わったら gitbash を起動してバージョン確認をしました。

$ node -v
v14.15.5
$ npm -v
6.14.11
$ npx -v
6.14.11

これで完了。