无法安装node_modules

时间:2013-08-14 10:21:35

标签: node.js npm

我正在尝试安装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

5 个答案:

答案 0 :(得分:22)

注册表网址指向https,您可以尝试通过

进行更改
npm config set registry="http://registry.npmjs.org/"

然后尝试安装模块。您可能在阻止安全(https)连接

的代理后面

如果它不起作用,那么您可以手动尝试从here

下载您尝试安装的模块的当前版本

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

答案 1 :(得分:3)

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

ETIMEDOUT

这将最大连接数设置为3,而不是默认值50。 自npm@3.8.0起,CLI已允许此选项。有关详细信息,请参阅this link

答案 2 :(得分:1)

我得到完全相同的东西。模块存在,但实际的下载存储库已关闭,或者此刻npm存在问题。请在几天后重试或将其报告给github链接。

编辑:

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

答案 3 :(得分:1)

尝试@ Canmah的答案。如果它无法帮助您尝试检查您的代理配置。

如果有代理,请按照下面的说明更新npm注册表,然后尝试安装节点模块。

@ the command prompt update the 
npm config set proxy <proxyserver>:<port>

答案 4 :(得分:0)

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

要解决此问题,您可以设置环境变量HTTP_PROXY和/或HTTPS_PROXY 适用于Windows / Linux。

The solved bin-wrapper issue.
Commit with fix.

修复中的代码片段:

var proxyServer = process.env.HTTPS_PROXY || 
                  process.env.https_proxy ||
                  process.env.HTTP_PROXY ||
                  process.env.http_proxy;