npm 3.10.10安装socket挂起报错

npm 3.10.10 install socket hang up error

我在 Dell XPS 15 运行ning Ubuntu 16.04 和内核 4.13.0.0-36-generic 上使用 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.

的当前版本

我已经试过了:

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

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

有没有人遇到并解决了这个问题?

感谢您的帮助。

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

终于用docker配合bind mounts解决了。步骤如下:

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

    FROM node:6.10.1
    
    ENV HTTPS_PROXY "http://yourproxy:yourport/"
    
    # Different RUN commands to configure npm and git corporate proxy
    
    WORKDIR /home/root/
    
  • 构建图像(来自 docker 文件的文件夹):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 命令。但是请注意,您需要递归地在 node_modules 文件夹上使用 chmod,因为容器默认使用 root。

另一件事,如果您使用的是 node-sass,它大部分时间都是在 npm 安装时即时编译的,并且与您的 OS 当前 version/architecture 相匹配。因此,如果您的 linux 分布与容器的分布不完全相同,您可能需要在容器上 运行ning npm install 之后在主机上重新编译 node-sass 。不过不用担心,node-sass 会在您启动应用程序时给您命令 运行。