
每當我嘗試執行 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.xz
NodeJS 文件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 運作的最佳指南:
sudo apt-get purge nodejs --auto-remove
和sudo apt-get purge npm --auto-remove
whereis node
:刪除節點的所有版本,一次一個。重複此操作,直到此命令在 後面返回一個空白node:
。sudo apt-get install nodejs
node --version
: 應該返回... no such file or directory
nodejs --version
: 應該返回v1x.x.x
。這是安裝的版本apt
。它可能比 Node JS 網站上提供的最新版本更新。sudo apt-get install npm
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