【问题标题】:Why does npm list -g lead to npm ERR! missing error?为什么 npm list -g 会导致 npm ERR!遗漏错误?
【发布时间】:2015-08-05 23:15:36
【问题描述】:

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

截图:

【问题讨论】:

  • npm install 的输出是什么?它是否报告了任何缺少的可选依赖项?

标签: node.js npm


【解决方案1】:

我知道这是一个老问题,但我一直在努力解决类似的问题,我认为我至少会添加对我有用的东西......

问题

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

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

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

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

希望这对某人有所帮助,如果我陈述了任何不准确之处或者我可以在此处添加一些内容,请发表评论。

【讨论】:

  • 没有评论的否决票?请详细说明...如果此答案不正确或导致我很乐意删除的问题)。
  • npm update -g --verbose 没有帮助。 npm cache clean --force 也没有帮助。就我而言,其中一个 CLI 应用程序是符号链接的,它来自 Lerna 本地文件夹,因此所有部门都被符号链接并被 npm 视为缺失。我重新安装了它的公共版本,相同的软件包,但它就像幻影错误一样持续存在。报告的 ERR 依赖项已到位。还没解决……
【解决方案2】:

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

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

我在sudo pacman -Syu 之后出现了这个问题,并且我有一堆错误缺少semvernode-pyg

附带说明一下,在 Arch Linux 下,node-pygsemver 作为依赖项安装,然后通过 npm 安装 npm(而不是通过 npm),我猜这两个的安装顺序或更新事项。可能在其他 OS 或 linux 发行版下,这两个包没有在存储库中列出。

【讨论】:

    【解决方案3】:

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

    npm dedupe
    

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 如果您解释了为什么这是正确的答案,以及您如何确定这是问题所在,这将对读者有很大帮助。
      • 文件 /usr/local/lib/package-lock.json 不存在 - 但该文件夹存在并包含子文件夹 node_modules
      • package.lock.json 将确切的版本标记到您的存储库中。通过删除它并重新运行,您可以让 npm 从头开始​​重建所有依赖项,并在其中解决任何冲突。
      猜你喜欢
      • 1970-01-01
      • 2021-07-29
      • 2019-10-08
      • 2015-06-05
      • 2014-05-02
      • 2015-09-22
      • 2021-09-06
      • 2021-04-13
      • 2013-11-20
      相关资源
      最近更新 更多