【问题标题】:npm not installing packages even after proxy is set即使设置了代理,npm 也不会安装包
【发布时间】:2014-03-05 15:03:30
【问题描述】:

我正在尝试在我们的一个实验室服务器中设置一个基于节点 js 的应用程序,其中通过代理实现与互联网的连接。该盒子正在运行 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

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

谢谢!

【问题讨论】:

  • 你的 .npmrc 文件的路径是什么? P:\&gt;npm config get https-proxynpm config get proxy 输出什么?
  • .npmrc 在我的主目录 (/home/&lt;user&gt;) 中。当我通过npm config get 获取属性时,我得到了正确的值。现在不得不求助于离线安装来解决这个问题。仍然不知道为什么它不起作用。

标签: node.js ubuntu proxy npm


【解决方案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 来安装它们中的任何一个。

但是,我仍然想知道我的基于 Internet 的安装出了什么问题。这仍然是个谜!

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 2016-04-09
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 2023-01-29
    相关资源
    最近更新 更多