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/en/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 所建議的,您可以從官方網站安裝 Node JS 的最新 LTS 版本:https://nodejs.org/en/download/

在 Ubuntu 上,如果您希望使用預設儲存庫來管理 Node apt,最好以這種方式安裝nodejs兩者。npm

您正在使用的 npm 版本很可能semver在特定位置與您安裝的 Node JS 版本不一致。如果只有一個版本nodejs並且只有一個版本npm,並且它們都使用預設儲存庫安裝,那麼這應該可以完美地工作。

以下是我使用主要 Ubuntu 儲存庫讓 Node 和 npm 運作的最佳指南:

  1. sudo apt-get purge nodejs --auto-removesudo apt-get purge npm --auto-remove
  2. whereis node:刪除節點的所有版本,一次一個。重複此操作,直到此命令在 後面返回一個空白node:
  3. sudo apt-get install nodejs
  4. node --version: 應該返回... no such file or directory
  5. nodejs --version: 應該返回v1x.x.x。這是安裝的版本apt。它可能比 Node JS 網站上提供的最新版本更新。
  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

相關內容