我不能在NodeJS中使用命令提示符使用npm install。我在运行npm install时得到这些错误:

module.js:339
    throw err;
    ^
Error: Cannot find module 'semver'
    at Function.Module._resolveFilename (module.js:337:15)
    at Function.Module._load (module.js:287:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (C:\Users\admin\AppData\Roaming\npm\node_modules\npm\l
ib\config\defaults.js:6:14)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)

当前回答

对我来说,这发生在我在全球安装纱线之后。 为了解决这个问题,使用yarn安装npm。

yarn global add npm

其他回答

这适用于我的Ubuntu(最新版本日期为2020年10月)

我必须首先从bash源代码中获取代码:

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

这得到了更新我的库的节点的最新版本,并摆脱了'semver'错误。

我也有同样的问题,但这是由损坏的包裹锁引起的。json文件。

删除package-lock。Json和运行NPM install再次为我修复了它。

提醒一下,可执行npm通过node env执行:

xb@dnxb:/tmp$ type -a npm
npm is /usr/bin/npm
npm is /bin/npm
xb@dnxb:/tmp$ realpath /usr/bin/npm /bin/npm
/usr/share/npm/bin/npm-cli.js
/usr/share/npm/bin/npm-cli.js
xb@dnxb:/tmp$ 
xb@dnxb:/tmp$ head -1 /usr/share/npm/bin/npm-cli.js
#!/usr/bin/env node

我可以通过-a类型检查哪个节点被选择,第一行具有最优先级,即,如果我运行/usr/local/bin/node /usr/share/npm/bin/npm-cli.js,我可以得到相同的错误,但如果我运行/usr/bin/node /usr/share/npm/bin/npm-cli.js,则没有错误:

xb@dnxb:/tmp$ type -a node
node is /usr/local/bin/node
node is /usr/bin/node
node is /bin/node
xb@dnxb:/tmp$ realpath /usr/local/bin/node
/usr/local/bin/node
xb@dnxb:/tmp$ realpath /usr/bin/node
/usr/bin/node
xb@dnxb:/tmp$ realpath /bin/node
/usr/bin/node
xb@dnxb:/tmp$ 

有2个唯一的基于realpath的节点exe。如果你有类似的情况,那么你需要找出如何删除不需要的/损坏的节点exe,例如sudo rm /usr/local/bin/node或操纵env $PATH。

我在AWS Linux上安装时也遇到了同样的问题。我必须用sudo安装它。因此,为了解决这个问题,我遵循了本文中的第3步(确保获得最新版本的node)

https://www.hostingadvice.com/how-to/update-node-js-latest-version/

wget https://nodejs.org/dist/vx.x.x/node-vx.x.x-linux-x64.tar.xz
tar -C /home/aUser/node --strip-components 1 -xJf node-vx.x.x-linux.x64.tar.xz

但是将它安装到用户的主目录/home/ auser /node。然后将该路径添加到我的path中。

导出路径= / home /用户/节点/ bin:美元的道路

在那之后,我就可以毫无问题地进行npm安装了。

对我来说,它发生在我的项目从gulp 3升级到gulp 4的时候。 所以,当我运行“gulp watch”命令时,它抛出了同样的错误。

这可能是由于与我的全球安装的gulp版本不匹配。

因此,要么用“-g”全局标志升级gulp会有所帮助,要么我按照下面的方法进行

但是,我在我的项目中使用了“./node_modules/.bin/gulp watch”。这确保了gulp需要的所有依赖项都只取自node_modules。