12

我正在尝试安装 node_module 但收到以下错误:

例如:npm install grunt-preprocess

D:\grunt_pre>npm install grunt-preprocess
 npm http GET https://registry.npmjs.org/grunt-preprocess
 npm http GET https://registry.npmjs.org/grunt-preprocess
 npm http GET https://registry.npmjs.org/grunt-preprocess
 npm ERR! Error: connect ETIMEDOUT
 npm ERR!     at errnoException (net.js:901:11)
 npm ERR!     at Object.afterConnect [as oncomplete] (net.js:892:19)
 npm ERR! If you need help, you may report this log at:
 npm ERR!     <http://github.com/isaacs/npm/issues>
 npm ERR! or email it to:
 npm ERR!     <npm-@googlegroups.com>

 npm ERR! System Windows_NT 6.1.7601
 npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
 ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "grunt-preprocess"
 npm ERR! cwd D:\grunt_pre
 npm ERR! node -v v0.10.15
 npm ERR! npm -v 1.3.5
 npm ERR! syscall connect
 npm ERR! code ETIMEDOUT
 npm ERR! errno ETIMEDOUT
 npm ERR!
 npm ERR! Additional logging details can be found in:
 npm ERR!     D:\grunt_pre\npm-debug.log
 npm ERR! not ok code 0
4

5 回答 5

28

注册表 URL 指向https,您可以尝试更改它

npm config set registry="http://registry.npmjs.org/"

然后尝试安装模块。您可能位于阻止安全 ( https) 连接的代理后面

如果它不起作用,那么您可以手动尝试从此处下载您尝试安装的模块的当前版本

并运行命令npm install grunt-preprocess-2.3.0.tgz

于 2013-08-14T11:07:37.217 回答
4

我也遇到了ETIMEDOUT错误,并且能够通过禁用路由器的防火墙、重新启动它来解决问题,最重要的是,使用以下 npm 命令配置同时连接的数量:

npm set maxsockets 3

这将最大连接数设置为 3,而不是默认的 50。自 npm@3.8.0 以来,CLI 一直允许此选项。请参阅此链接以获取更多参考。

于 2016-11-04T17:19:29.787 回答
1

试试@Canmah 的答案。如果它没有帮助,请尝试检查您的代理配置。

如果有代理,请按如下所述更新 npm 注册表,然后尝试安装节点模块。

@ the command prompt update the 
npm config set proxy <proxyserver>:<port>
于 2013-08-14T11:13:01.350 回答
1

我得到完全相同的东西。要么该模块存在,但实际的下载存储库已关闭,要么此时 npm 存在问题。过几天再试或者报到github链接。

编辑:

您收到的错误是他们的服务器或您的连接超时。这可能是因为您位于阻止连接的防火墙/代理后面。

于 2013-08-14T11:05:22.730 回答
0

这可能是模块bin-wrapper的问题,它不尊重代理,这就是您在尝试下载时看到ETIMEDOUT错误的原因。

要解决此问题,您可以设置环境变量 HTTP_PROXY 和/或 HTTPS_PROXY。
在 Windows/Linux 下工作。

已解决的bin-wrapper问题。
提交修复。

修复中的代码片段:

var proxyServer = process.env.HTTPS_PROXY || 
                  process.env.https_proxy ||
                  process.env.HTTP_PROXY ||
                  process.env.http_proxy;
于 2013-12-04T15:54:39.133 回答