即使设置了代理,npm也不会安装包

时间:2014-03-05 15:03:30

标签: node.js ubuntu proxy npm

我正在尝试在我们的一个实验室服务器中设置基于节点js的应用程序,通过代理实现与Internet的连接。该框运行Ubuntu 13.10。我已经配置了网络代理,我可以通过Firefox连接到互联网。对于apt-get,我已在/etc/apt/apt.conf中配置了代理。这也有效。

安装节点js后,当我尝试npm install -g <package>时,它会给我错误。我也为npm配置了代理。我的.npmrc看起来像这样:(我的代理不需要用户名/密码)。

registry = http://registry.npmjs.org/
proxy = http://<domain>:8080/
https-proxy = http://<domain>:8080

我尝试过在论坛中找到的各种选项,但似乎没有一个对我有用。 (比如将strict-ssl设置为false,使用--without-ssl --insecure选项等。)

这是我目前遇到的错误:

npm http GET http://registry.npmjs.org/express
npm http GET http://registry.npmjs.org/express
npm http GET http://registry.npmjs.org/express
npm ERR! Error: connect ECONNREFUSED
npm ERR!     at errnoException (net.js:904:11)
npm ERR!     at Object.afterConnect [as oncomplete] (net.js:895:19)
npm ERR!  { [Error: connect ECONNREFUSED]
npm ERR!   code: 'ECONNREFUSED',
npm ERR!   errno: 'ECONNREFUSED',
npm ERR!   syscall: 'connect' }
npm ERR! 
npm ERR! If you are behind a proxy, please make sure that the
npm ERR! 'proxy' config is set properly.  See: 'npm help config'

npm ERR! System Linux 3.11.0-12-generic
npm ERR! command "/home/<user>/apps/node-v0.10.26-linux-x86/bin/node" "/home/<user>/apps/node-v0.10.26-linux-x86/bin/npm" "install" "-g" "express"
npm ERR! cwd /home/<user>
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! syscall connect
npm ERR! code ECONNREFUSED
npm ERR! errno ECONNREFUSED
npm ERR! stack Error: connect ECONNREFUSED
npm ERR! stack     at errnoException (net.js:904:11)
npm ERR! stack     at Object.afterConnect [as oncomplete] (net.js:895:19)
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/<user>/npm-debug.log
npm ERR! not ok code 0

任何想法,这里出了什么问题?我坚持这一天的事情; - (

谢谢!

1 个答案:

答案 0 :(得分:1)

我无法解决此问题,但找到了解决办法 - 我将笔记本电脑上需要的软件包捆绑在一起,然后在实验室盒子上进行离线安装。以下是如何做到这一点:

mongodb节点模块为例。我把它安装在笔记本电脑上进行开发。如果打开mongodb模块的package.json文件,则会列出依赖项以及相应的版本号。我看起来像这样:

"dependencies": { "bson": "0.2.5", "kerberos": "0.0.3" },

更新package.json文件以包含"bundledDependencies"。 (这个位置真的不重要,只是它应该处于同一级别,作为JSON树中"dependencies"的兄弟姐妹)。这是您需要添加的内容:

"bundledDependencies": [ "bson", "kerberos" ],

现在,当您在包的目录(存在package.json文件的位置)内时,运行命令npm pack。这将为您创建一个tgz文件。就我而言,它创建了mongodb-1.3.23.tgz。只需将此文件复制到要安装它的框中,然后运行npm install ./mongodb-1.3.23.tgz即可。这应该会让你通过。由于所有依赖项现在捆绑在此.tgz文件中,因此npm不会尝试连接到Internet以安装其中任何一个。

但是,我仍然想知道基于互联网的安装出了什么问题。那还是个谜!