为什么npm list -g导致npm ERR!遗失错误?

时间:2015-05-24 09:31:25

标签: node.js npm

npm在使用npm list -g

后返回以下消息
npm ERR! missing: atom-package-manager@*, required by undefined@undefined
npm ERR! missing: opal-npm-wrapper@git://github.com/anthonny/opal-npm-wrapper.git#0.1.1, required by asciidoctor.js@1.5.2
npm ERR! missing: xmlhttprequest@~1.6.0, required by asciidoctor.js@1.5.2

屏幕截图:

4 个答案:

答案 0 :(得分:8)

我知道这是一个老问题,但我一直在讨论类似的问题,并且我至少会添加对我有用的内容......

<强>问题

运行npm list -g按预期列出所有包,然后抛出各种错误,包括缺失的错误,如上所述,至少对我来说,还有一堆无效和无关的错误,例如:

extraneous: aws-sign2@0.5.0 /usr/local/lib/node_modules/npm/node_modules/aws-sign2

我尝试了一系列解决方案,包括npm upgradenpm prune,以及安装丢失的软件包,对我来说这是一个很好的解决方案:

missing: semver@2 || 3, required by normalize-package-data@1.0.1

我仍然不确定这些错误的确切原因,但我相信这是在我升级到3.3.6时发生的。

<强>解决方案

经过一番头疼我跑了:

npm update -g --verbose

将我从v3.3.6升级到v3.5.3并摆脱了所有错误。请注意,--verbose不是必需的,但有助于了解究竟发生了什么。现在我的npm list -g返回一个干净的输出:

/usr/local/lib
├── npm@3.5.3
└── semver@2.3.2

希望这有助于某人,如果我说过任何不准确之处或者我可以在这里添加一些内容,请发表评论。

答案 1 :(得分:2)

对于有相同问题的任何人,请尝试运行:

npm dedupe

有关npm dedupe的更多信息,请参阅文档。 https://docs.npmjs.com/cli/dedupe.html

答案 2 :(得分:1)

删除package-lock.json中的/usr/local/lib

答案 3 :(得分:0)

在安装依赖包之前,必须先安装一个名为asciidoctor.js的全局包。今天,我遇到了同样的问题:我的某些全局软件包的树结构中包含“ UNMET DEP”(运行npm list -g以查看每个全局软件包的完整深度),这意味着缺少其子依赖项。

我通过重新安装每个全局软件包来解决。如果您在Arch Linux上遇到此问题, 首先查看此帖子:I have unmet dependencies

在我sudo pacman -Syu之后,我遇到了这个问题,并且我遇到了一堆错误,它们缺少semvernode-pyg

作为旁注,在Arch Linux下,node-pygsemver作为依赖项安装,而npm是通过pacman(而不是npm)安装的,我想这两个安装或更新的顺序很重要。可能在其他OS或Linux发行版下,这两个软件包未在存储库中列出。