我不能在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)

当前回答

我所需要的是在我工作的目录中sudo rm -rf node_modules/。这发生在我用n个lt更新我的节点版本之后

其他回答

如果您是在Linux服务器退出服务器,并重新ssh

在brew在我的MacOs Sierra 10.12.6上安装纱线后,我也遇到了同样的麻烦。(并且在brew更新自我后第一次尝试安装,并提示“Homebrew必须在Ruby 2.3下运行!”您正在运行2.0.0。(RuntimeError)”。所以我重新运行了一遍。)

所以我使用n管理器重新安装npm。

通过参数为空的“n”命令切换到另一个节点版本(在我的例子中是8.0) 或者通过“n x.x.x”安装new,其中x.x.x为节点版本号(我需要6.9.1) 删除工作版本号为“n rm x.x.x”,其中x.x.x为节点版本号。如果需要,请使用sudo 通过“n x.x.x”安装工作版本号,其中x.x.x表示节点版本号。如果需要,请使用sudo 切换到节点的工作版本。(参考第一步)

我想问题可能是在sudo下安装的节点。

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

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

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

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

提醒一下,可执行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。

我在更高版本的cli上运行项目时遇到了这个问题。要解决这个问题,你可以简单地注释掉@angular-devkit/build-angular模块,然后再次重新安装它

NPM install @angular-devkit/build-angular——save