为什么会发生 semver 错误?

为什么会发生 semver 错误?
$ npm install

internal/modules/cjs/loader.js:1023
  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:1020:15)
    at Function.Module._load (internal/modules/cjs/loader.js:890:27)
    at Module.require (internal/modules/cjs/loader.js:1080:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/usr/share/npm/lib/utils/unsupported.js:2:14)
    at Module._compile (internal/modules/cjs/loader.js:1176:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
    at Module.load (internal/modules/cjs/loader.js:1040:32)
    at Function.Module._load (internal/modules/cjs/loader.js:929:14)
    at Module.require (internal/modules/cjs/loader.js:1080:19) {

  code: 'MODULE_NOT_FOUND',

  requireStack: [
    '/usr/share/npm/lib/utils/unsupported.js',
    '/usr/share/npm/bin/npm-cli.js'
  ]
}

答案1

在 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并正常工作。

答案2

你可能没有 semver 模块。Ubuntu
可能正在使用一些旧的 nodejs 版本,并且没有它。

您可以检查运行以下命令:Ubuntu nodejs 版本:nodejs -v
您安装的版本:node -v

您必须确保使用的是已安装的版本。
因为它可能是较新的版本,已包含 semver 包。

就我个人而言,我安装nvm然后运行:( nvm install node应该安装最新版本)
然后使用:nvm listnvm ls查看可用的版本。

如果你没有使用刚刚安装的最新版本,请运行:
nvm use <version>
就我而言,截至撰写本文时,我的版本是 19.8.0,
因此我会使用nvm use 19.8.0

然后尝试运行 npm 以及之前不起作用的任何命令。

您还可以使用此命令设置节点默认版本:
nvm alias default 19.8.0
如果将来出现任何问题,请再次检查您所使用的版本nvm ls

相关内容