每当我尝试运行 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