LoginSignup
43
32

More than 3 years have passed since last update.

nvm環境でnpmのアップデートができない時の対処法

Last updated at Posted at 2018-05-06

npm本体のバージョンが最新でない場合、npmコマンドを使用した後に、
更新を促すメッセージが表示されることがあります。

Update available X.X.X → X.X.X
Run npm i -g npm to update

しかし、上記コマンドを実行しても下記のようなエラーが出て、
npmをインストールすることができませんでした。

npm ERR! path C:\Program Files\nodejs\npm.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete C:\Program Files\nodejs\npm.cmd: is outside C:\Program Files\nodejs\node_modules\npm and not a link
npm ERR! File exists: C:\Program Files\nodejs\npm.cmd
npm ERR! Move it away, and try again.

解決策がないかを検索してみたところ、nvm-windowsのissueページが見つかり、
nvm-windows特有の問題であることが判明しました。

上から順に読み進めて、記載されているコマンドをいくつか試したところ、
成功したのがstramel氏が書いた下記の内容でした。

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
rm npm npx npm.cmd npx.cmd
mv node_modules/npm node_modules/npm2
node node_modules/npm2/bin/npm-cli.js i -g npm@latest
rm -rf node_modules/npm2/

※コマンドプロンプト等を使用している場合は、下記のコマンドで同等の処理になります。

cd %ProgramFiles%\nodejs
del npm npx npm.cmd npx.cmd
move node_modules\npm node_modules\npm2
node node_modules\npm2\bin\npm-cli.js i -g npm@latest
rd /S /Q node_modules\npm2

要は program files/nodejs ディレクトリがシンボリックリンクになっていて、
その中のファイルを消す時にエラーになっているのが原因なので、
一旦リネームすることでエラーを回避しています。

自分の場合、一度上記コマンドでアップデートを実行した後は
npm i -g npm でエラーが出なくなり、次回以降のアップデートができるようになりました。

43
32
1

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
43
32