0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Nodeのバージョンは新しいのになぜかnpmのバージョンだけ古いという事象が起こっていた

Posted at

経緯

nodeのバージョンは18を入れていて、本来ならnpmはバージョン9になっているはずなのですが、なぜかnodeが18、npmは6.14になっていました。

$ npm update -g npm

アップデートを実行しても9に上がらず、6台のまま。

解消した時のメモです。

原因

原因としてはおそらくパッケージ版のnodeをインストールした上で後入れでnなどのnode管理ツールを使ったことで何かおかしくなってしまったのかなと。
パッケージ版と使用しているnを削除し、今後はnodebrewのみを導入することにしました。

削除する前に

利用しているパッケージをメモ

$ sudo npm ls -g --depth=0

グローバルにインストールしている一覧がこれで取得できます。メモメモ。

インストールしているものをアンインストール

いきなり現在インストールしているnpmやnを削除してしまうと、後でnodebrewを入れたときに上記のコマンドで一覧に出てこないのにパッケージがなぜか使えるという事象が起きてしまいます。
おそらくnodebrewが管理するpathを対象にnpmは検索するので一覧には出ないけど、管理範囲外にパッケージが残っているから使える状態。使えるならいいんじゃ?と思うかもしれませんがアプデとかしたくなった時に困るかもなので、インストールしているものはnodebrew管理下でインストールし直します。

$ npm uninstall -g [package-name]

[]部分は各自インストールしているパッケージ名を入れて実行してください

node,npm,nの削除

こちらに詳しく書いてありました
参考

こちらを参考にしつつ私が行ったのは
・npmのアンインストール
・ソース版のnodeをアンインストール
・各種残骸ファイルの削除

homebrewからnodebrewをインストール

上記ページの下部に手順が載っています。
パスを通した後は、一度ターミナルを再起動しないとコマンドは反映されないので、手順通りやったのにコマンドが使えない!と慌てないように気をつけましょう

メモしたインストールしていたものをインストールする

nodebrewが使えるようになったのを確認したら最初にメモをしたものを全てインストールし直しましょう。

無事相応のnpmのバージョンになりました。

$ node -v
v20.3.0
$ npm -v
9.6.7

インストールしたパッケージを削除せず先にnpmをアンインストールしてnode管理ツールを導入してしまったとき

npmでインストールしているグローバルの一覧に無いのにコマンド使える!って状態になってしまったとき

以下はAngularCliをnodebrew管理下に置き直したときの例です

今使えるAngularCliのパスを調べる

$ which ng

表示されたパスを使って削除する

$ sudo rm -r [/usr/local/bin/ng]

[]部分はwhichで調べたパスです

改めてcliをインストールする

$ npm i -g @angular/cli
$ which ng

nodebrewを利用している時のパスで表示されます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?