npm 3.10.10安装socket挂起报错

标签 npm node-modules

我在运行 Ubuntu 16.04 和内核 4.13.0.0-36-generic 的 Dell XPS 15 上使用 Node 6.10.1 和 npm 3.10.10。 我在一个通过 cntlm 配置的企业代理后面。

当我在一个项目上运行 npm install -d 它在很短的时间内就开始工作了,过了一会儿我得到了 Error: socket hang up

我发现了很多关于我的问题的问题,但似乎没有任何解决方案有效。

这是 npm 配置列表 的摘录:

; cli configs
user-agent = "npm/3.10.10 node/v6.10.1 linux x64"

; userconfig /home/msb/.npmrc
https-proxy = "http://localhost:3128/"
registry = "http://urlTocorporateRegistryWhichWorksOnOtherComputers"
strict-ssl = false

; node bin location = /home/msb/.nvm/versions/node/v6.10.1/bin/node
; cwd = /home/msb
; HOME = /home/msb
; "npm config ls -l" to show all defaults.

无法更改注册表,因为我们正在使用一些内部模块,而且我必须保留当前版本的 node/npm。

我已经试过了:

  • 直接在 npm 配置中使用代理,而不是通过 cntlm
  • 通过命令 trickle -s -d 100 -u 100 npm install -d
  • 使用 trickle 限制我的上传/下载能力

另一个迹象:它适用于 Windows,我有一个同事在较慢的电脑上运行 Ubuntu 17.04,它适用于他。我们认为我的机器在请求注册表时可能有点过于残酷。有谁知道减慢 npm 请求的方法吗?

它曾经通过 yarn 工作,但一些新的发展迫使我回到 npm。

有没有人遇到并纠正过这个问题?

感谢您的帮助。

最佳答案

我在 Ubuntu 18.04 上试验了同样的问题,没有明显的原因。

最后用docker with bind mounts解决了。步骤如下:

  • 创建一个包含以下元素的dockerfile(如果你不需要像我一样配置代理,也可以直接用使用过的镜像运行)

    FROM node:6.10.1
    
    ENV HTTPS_PROXY "http://yourproxy:yourport/"
    
    # Different RUN commands to configure npm and git corporate proxy
    
    WORKDIR /home/root/
    
  • 构建图像(来自 dockerfile 的文件夹):docker image build -f npm-installer/Dockerfile -t custom-npm-installer .

  • 进入通常运行的项目文件夹npm install
  • 运行以下命令以交互方式运行容器:docker container run -it --network host -v </host/path/to/pj>:/home/root/pj-to-install --name custom-npm-installer custom-npm-installer bash

您现在可以运行 npm install来自容器的命令。但是要小心,然后您需要使用 chmodnode_modules 文件夹中递归,因为容器默认使用 root。

另一件事,如果您使用的是 node-sass,它大部分时间都是在安装 npm 时即时编译的,并且与您的操作系统当前版本/架构相匹配。因此,如果您的 Linux 发行版与容器的发行版不完全相同,您可能需要在运行 npm install 后在主机上重新编译 node-sass。在容器上。不过不用担心,node-sass 会在您启动应用程序时为您提供运行命令。

关于npm 3.10.10安装socket挂起报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49055140/

相关文章:

node.js - npm chokidar 发射事件两次

node.js - Npm 和 Node 命令被破坏

javascript - 如何使用node webkit js写入文件?

node.js - 如何找出NPX运行的文件?

angular - 在 Angular 中运行 dist 文件夹是否需要 node_modules 和 package.json

javascript - Angular2 npm 包 - 我如何知道要下载什么?

node.js - "npm install @azure/msal-browser @azure/msal-angular@latest"但node_modules 内没有任何内容

javascript - 需要中间件功能的路由

javascript - 为什么 console.log() 在 createServer() 中输出两次?

node.js - npm ERR!找不到404-GET https ://registry. npmjs.org/error-ex