node.js - 即使设置了代理,npm 也不会安装包

标签 node.js ubuntu proxy npm

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

安装 Node 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

任何想法,这里出了什么问题?我这一天都被这该死的东西困住了;-(

谢谢!

最佳答案

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

mongodb 为例 Node 模块。我将它安装在我进行开发的笔记本电脑上。如果您打开 package.json mongodb 模块的文件,依赖项列出了相应的版本号。我的看起来像这样:
"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 的安装出了什么问题。那还是个谜!

关于node.js - 即使设置了代理,npm 也不会安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201449/

相关文章:

angularjs - Passport 在调用 passport.authenticate ('facebook' 后,如何在不重定向用户的情况下获取 facebook 重定向 uri

node.js - fs.readdir 函数中的竞争条件在哪里?

php - 安装 php-xml 和 php-xml7.0 后 Ubuntu 14.04 上的 Pear 错误 "XML Extension not found"

node.js - 在 Mongoose 预中间件中,我如何访问更新查询?

javascript - 从循环中捕获 promise 错误

amazon-web-services - https 为 AWS EC2 Ubuntu 实例引发 ERR_SSL_PROTOCOL_ERROR

java - 为什么我的spring boot应用会自动关闭?

Node.js Socket.io WebSocket Nginx 配置?

ssl - Nginx 反向代理力 https

python - 以编程方式登录用户?