【发布时间】: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