【问题标题】:npm too many local dependencies?npm 本地依赖太多?
【发布时间】:2014-08-12 23:10:06
【问题描述】:

尝试从git submodule 工作流程转移到npm install 之一。我有大约 60 个独立的库,并将每个库都转换为适当的 npm 模块。现在我有package.json 和相当大的dependencies 部分,其中每一行都是这样的:

"libraryN": git+ssh://git@gitlab.company.local:libraryN.git

这样的行有 60 行。每个库可能都有自己的依赖项,但大多数都没有依赖项。而且它们是相互独立的。

现在,当我执行 npm install 时,它会暂停几秒钟(我想是构建一个依赖项列表)并失败并出现以下 SSH 错误:

ssh_exchange_identification: Connection closed by remote host

做了一些实验,我发现限制package.json 中的依赖数量会有所帮助。因此,拥有 10 个或更少的依赖项总是可以正常工作而不会出现任何错误。 11 到 14 之间偶尔会失败,而 15 甚至更多则一直失败。

看起来它与我的本地 git 存储库服务器的同时 ssh 连接有关。检查了它的日志 - 没有发现任何可疑的东西。

问题 - 我怎样才能一次性安装(和管理)所有 60 个依赖项并避免这个与 ssh 相关的问题?

谢谢。

【问题讨论】:

  • 我没有尝试连接这么多 git repos 的经验,但我很好奇它是否真的有必要。这是用于生产环境还是开发环境?您是否经常更新模块,以便从 git 服务器加载它们?如果没有,我会考虑将它们存储在本地并通过利用 npm link 在每个项目的基础上使用它们
  • 这可能是相关的:github.com/npm/npm/issues/3911 -- 未解决的问题。
  • 我遇到了同样的事情并查看了未解决的问题,在 sshd_config 上设置 MaxStartups 对我不起作用(尽管我可能做了一些愚蠢的事情)不知道还有什么可以尝试的除了自己在 npm 上进行黑客攻击。对于 Nathan 的问题,在我的具体情况下确实有必要,我们确实对模块进行了足够的更新,并且 npm link 是一个很好的建议,它肯定适用于一些堆栈溢出。但是,npm 链接不是递归的,因此您必须进入并手动链接有问题的模块,以便在 project/node_modules 深处可能有好几层,就像我所做的那样

标签: node.js git ssh dependencies npm


【解决方案1】:

另一个解决方案可能是使用 SSH 连接池。把它放在你的~/.ssh/config

Host *
   ControlMaster auto
   ControlPath /tmp/%r@%h:%p
   ControlPersist yes
EscapeChar ~

【讨论】:

    【解决方案2】:

    我有同样的问题,似乎可以通过增加 MaxStartups 和 MaxSessions 来解决(sshd 默认为 10)

    /etc/ssh/sshd_config:

    ...
    MaxStartups 60
    MaxSessions 60
    

    【讨论】:

    • 为我工作。我还必须重新启动 sshd 服务。
    • sshd_config ?不是 ssh_config 吗?
    • sshd_config 暗示这是服务器端更改。
    【解决方案3】:

    您可能需要减少同时连接的数量,默认为 50。

    例如,以下 npm 配置允许限制最多 3 个同时连接:

    npm set maxsockets 3
    

    自 npm@3.8.0 以来,CLI 一直允许此选项。如需进一步参考,请参阅this link

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 2021-09-20
      • 1970-01-01
      • 2015-04-09
      • 2019-02-17
      相关资源
      最近更新 更多