Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

npmが動かない(Cannot find module 'semver')

Q&A

Closed

解決したいこと

node.jsのインストールが完了し、動作すること

発生している問題・エラー

2022/08/14時点です

# apt install npm
(省略)
# apt list|grep semver
node-semver-diff/focal,now 2.1.0-2 all [インストール済み、自動]
node-semver/focal,now 7.1.3-1 all [インストール済み、自動]
#

# npm -v
node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module 'semver'
Require stack:
- /usr/share/npm/lib/utils/unsupported.js
- /usr/share/npm/bin/npm-cli.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/usr/share/npm/lib/utils/unsupported.js:2:14)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/usr/share/npm/lib/utils/unsupported.js',
    '/usr/share/npm/bin/npm-cli.js'
  ]
}

自分で試したこと1

WSL環境下で

  • rm -rf package-lock.json (すべての)
  • rm -rf /usr/share/nodejs
  • rm -rf ~/.npm
  • rm -rf /root/.npm
  • rm -rf /usr/share/n
  • 無理やりbrewを入れて brewからインストールも行った

自分で試したこと2

WSL環境下で

apt remove --purge nodejs npm
apt clean
rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*
apt install npm nodejs
npm cache clean -f
npm install -g n
n stable

自分で試したこと3

Hyper-V環境で新規ubuntu仮想マシン(CUI)を作成後

apt install npm
npm -v

のみを実行

# npm -v
node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module 'semver'

以下省略

0

3Answer

ubuntu22.04で同様の不具合が発生した時は下記のコマンドの実行で直りました

hash -r

自分が試した時はnでインストールした最新版のnpmで問題が発生し、nでインストールしたときにそのコマンドが紹介されました

sudo apt purge -y nodejs npm
sudo apt autoremove -y
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/bin/node*
sudo rm -rf /usr/local/include/node*
sudo rm -rf ~/.npm
sudo apt install -y npm
sudo npm install -g n
sudo n stable
# 上記のインストールコマンドだけではnpm実行時に不具合が発生しました

hash -r
# このコマンドが効きました

npm -v
# 期待通りに動きました

hash -r コマンドはn実行後に紹介されて知りました
https://github.com/tj/n/blob/0ce85771fdff8f4b3e09ade700461b4f58a64444/bin/n#L753

2Like

Ubuntu向けのNode.jsバイナリはaptではメンテナンスされていません.
Microsoft公式ドキュメントにインストール手順がまとまっていますのでこちらを使用してください.

あとパッケージがぐっちゃぐちゃになるのでnpmはsuperuserで動かしてはいけません.

0Like

ありがとうございます。

(ubuntuを開発で使用してわずか8カ月の初心者にとってはきつい仕打ちでした)

0Like

Your answer might help someone💌