npm 3.10.10安装socket挂断错误

时间:2018-03-01 17:09:40

标签: 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 config list

的摘录
; 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 通过命令trickle -s -d 100 -u 100 npm install -d
  • 限制我的上传/下载功能

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

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

我终于将docker与bind mount一起使用来解决它。步骤如下:

  • 使用以下元素创建一个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命令。但是请小心,由于容器默认情况下使用root,因此您需要在 node_modules 文件夹上递归使用chmod

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