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

hug*_*eow 14 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
Run Code Online (Sandbox Code Playgroud)

截图:

Ski*_*ack 9

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

问题

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

extraneous: aws-sign2@0.5.0 /usr/local/lib/node_modules/npm/node_modules/aws-sign2
Run Code Online (Sandbox Code Playgroud)

我尝试了一堆解决方案,包括npm upgrade,npm prune以及安装丢失的软件包,这对我来说是semver:

missing: semver@2 || 3, required by normalize-package-data@1.0.1
Run Code Online (Sandbox Code Playgroud)

我仍然不确定这些错误的确切原因,但我相信这是在我升级到3.3.6时发生的(很可能是由于我缺乏node&npm的专业知识引起的:()

虽然我已经提到过,在遇到一些令人头痛的问题之后,我已经没有节点/ npm wiz了:

npm update -g --verbose
Run Code Online (Sandbox Code Playgroud)

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

/usr/local/lib
??? npm@3.5.3
??? semver@2.3.2
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助,如果我说过任何不准确之处或者我可以在这里添加什么,请发表评论.


小智 7

对于遇到同样问题的人,请尝试运行:

npm dedupe
Run Code Online (Sandbox Code Playgroud)

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