Ubuntu 19.04 で Npm がモジュール「semver」エラーを見つけることができません

Ubuntu 19.04 で Npm がモジュール「semver」エラーを見つけることができません

npm コマンドを実行しようとすると、次のエラーが発生します。

internal/modules/cjs/loader.js:626
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 (internal/modules/cjs/loader.js:623:15)
    at Function.Module._load (internal/modules/cjs/loader.js:527:27)
    at Module.require (internal/modules/cjs/loader.js:681:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/usr/share/npm/lib/utils/unsupported.js:2:14)
    at Module._compile (internal/modules/cjs/loader.js:774:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    at Module.load (internal/modules/cjs/loader.js:641:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Module.require (internal/modules/cjs/loader.js:681:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/usr/share/npm/lib/utils/unsupported.js',
    '/usr/share/npm/bin/npm-cli.js'
  ]
}

私は基本的に FreeCodeCamp をオフラインで使用しようとしていました。コマンド「npm ci」を実行するように求められましたが、そこからこのエラーが発生し始めました。

npm を再インストールしてみましたが、うまくいきませんでした。semver モジュールのインストールも試しましたが、これも役に立ちませんでした。

何が問題なのでしょうか、またどうすれば修正できるのでしょうか?

答え1

同様の質問が見つかりましたここそしてその答えはうまくいきました。

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 apt-get purge nodejs npm
sudo apt autoremove

最新のtar.xzNodeJSファイルをダウンロードしてくださいhttps://nodejs.org/ja/download/ より

tar -xf node-v#.#.#-linux-x64.tar.xz
sudo mv node-v#.#.#-linux-x64/bin/* /usr/local/bin/
sudo mv node-v#.#.#-linux-x64/lib/node_modules/ /usr/local/lib/

#.#.#ダウンロードしたバージョンはどこにありますか。

インストールを確認するには

node -v
npm -v

答え2

Node JS/npm をどのように管理したいかによって異なります。

Bilbo Baggins が提案したように、公式 Web サイトから Node JS の最新の LTS バージョンをインストールできます。https://nodejs.org/ja/download/ より

Ubuntu では、 を使用してデフォルトのリポジトリを通じて Node を管理する場合は、この方法でと のapt両方をインストールするのが最適です。nodejsnpm

使用している npm のバージョンが、semverインストールされている Node JS のバージョンと一致しない特定の場所にある可能性が非常に高いです。 のバージョンが 1 つだけnodejs、 のバージョンが 1 つだけでありnpm、両方がデフォルトのリポジトリを使用してインストールされている場合、これは完全に機能するはずです。

メインの Ubuntu リポジトリを使用して Node と npm を動作させるための最良のガイダンスを以下に示します。

  1. sudo apt-get purge nodejs --auto-removeそしてsudo apt-get purge npm --auto-remove
  2. whereis node: ノードのすべてのバージョンを 1 つずつ削除します。このコマンドが後に空白を返すまで繰り返しますnode:
  3. sudo apt-get install nodejs
  4. node --version: 戻るべき... no such file or directory
  5. nodejs --version: は を返しますv1x.x.x。これは によってインストールされたバージョンですapt。おそらく、Node JS Web サイトで入手できる最新バージョンよりも古いものになります。
  6. sudo apt-get install npm
  7. npm --version:nodejsによってインストールされapt、正常に動作します。

答え3

私はノードのバージョンを管理するためにnvmを使用していましたが、私の場合はnpm syslinkが壊れていたので、ノードをアンインストールしてから再インストールすることで解決しました。

ノードのバージョンを確認するにはnode --version

実行nvm uninstall <your version>

その後、再インストールしてくださいnvm install <your version

答え4

私も同じ問題を抱えていましたが、22.04 でした。上記のいずれも機能しませんでしたが、機能するこのプロセスを見つけました。 https://codemarvels.in/2021/03/20/npm-install-gives-error-cannot-find-module-semver/ 本質的には:

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 apt-get purge nodejs npm
sudo apt autoremove
sudo apt-get install nodejs npm

関連情報