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 版本不一致。如果只有一个版本的nodejsnpm,并且它们都使用默认存储库安装,则这应该可以完美运行。

以下是使用主 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

相关内容