有没有办法让 npm install (命令)在代理后面工作?

Posted

技术标签:

【中文标题】有没有办法让 npm install (命令)在代理后面工作?【英文标题】:Is there a way to make npm install (the command) to work behind proxy? 【发布时间】:2011-11-25 10:56:53 【问题描述】:

阅读.npmrc 文件中的代理变量,但它不起作用。尽量避免手动下载所有需要的包并安装。

【问题讨论】:

【参考方案1】:

SSL and certificate issues 上的 curl 页面上有很好的信息。 我的大部分答案都是基于那里的信息。

使用 strict-ssl false 是不好的做法,可能会产生问题。我们可以做的是通过“中间人”证书添加正在注入的证书。

如何在 Windows 上解决这个问题:

    根据 Mozilla 的 CA 包从 curl 下载 CA 证书。您还可以使用 curl 的“firefox-db2pem.sh”shell 脚本来转换本地 Firefox 数据库。 使用 https 访问网页,例如 Chrome 或 Internet Explorer 中的 *** 点击锁形图标,点击查看证书或在 Chrome 中点击“有效” 导航到认证路径。***证书或根证书是我们要提取的证书。点击该证书,然后“查看证书” 单击第二个选项卡“详细信息”。单击“复制到文件”。选择 DER 格式并记下保存文件的位置。选择一个合适的文件名,例如 rootcert.cer 如果您安装了 Git,您将拥有 openssl.exe。否则,请在此阶段安装 git for windows。 openssl 可执行文件很可能位于 C:\Program Files\git\usr\bin\openssl.exe。我们将使用 openssl 将文件转换为 NPM 理解它所需的 PEM 格式。 使用以下命令转换您在步骤 5 中保存的文件:openssl x509 -inform DES -in **rootcert**.cer -out outcert.pem -text 其中 rootcert 是您在第 5 步中保存的证书的文件名。 在足够智能的文本编辑器中打开 outcert.pem 以理解行尾,而不是记事本。 找到 -----BEGIN CERTIFICATE----- 很多字符 -----END CERTIFICATE----- 并复制它们之间的所有文本,还包括 BEGIN / END 行 现在我们将该内容粘贴到步骤 1 中创建的 CA Cert 包的末尾。因此,请在高级文本编辑器中打开 cacert.pem。转到文件末尾并将上一步中的内容粘贴到文件末尾。 (保留您刚刚粘贴的内容下方的空行) 将保存的 cabundle.pem 复制到合适的位置。例如你的 %userprofile% 或 ~。记下文件的位置。 现在我们将告诉 npm/yarn 使用新的包。在命令行中,写入npm config set cafile **C:\Users\username\cacert.pem** 其中 C:\Users\username\cacert.pem 是第 10 步的路径。 可选:再次开启 strict-ssl,npm config set strict-ssl true

呸!我们成功了!现在 npm 可以理解如何连接了。好处是你可以告诉 curl 使用相同的 cabundle.pem,它也会理解 HTTPs。

【讨论】:

【参考方案2】:

我只是在与 npm 和代理设置进行斗争,因为我不喜欢其他答案,所以我想分享我认为应该如何解决这个问题(妥协安全不是一种选择)。

文档是怎么说的

首先,您必须了解与代理相关的npm 可用的重要设置:

proxy 用于传出 http 请求的代理。如果设置了 HTTP_PROXY 或 http_proxy 环境变量,则底层请求库将遵循代理设置。 https-proxy 用于传出 https 请求的代理。如果设置了 HTTPS_PROXY 或 https_proxy 或 HTTP_PROXY 或 http_proxy 环境变量,则底层请求库将遵循代理设置。 noproxy 不应使用代理的逗号分隔字符串或域扩展数组。 cafile 包含一个或多个证书颁发机构签名证书的文件的路径。类似于 ca 设置,但允许多个 CA,以及将 CA 信息存储在磁盘上的文件中。

现在,由于 proxyhttps-proxy 的默认值基于环境变量,因此建议正确配置这些变量,以便其他工具也可以工作(例如 curl)。

请注意,对于 v6,noproxy 文档没有说明任何有关环境变量的内容,并且提到了 since v7 NO_PROXY 环境变量。我的环境 未配置为验证此变量的工作方式(如果涵盖小写版本)。

正确配置

现在我正在配置应该在代理后面使用的 docker 映像,并且 Dockerfile 中需要这些条目:

COPY certs/PoroxyCertificate.crt /usr/local/share/ca-certificates/
COPY certs/RootCa.crt /usr/local/share/ca-certificates/
RUN update-ca-certificates
# here all tools like curl were working

RUN  ["/bin/bash", "-c", "set -o pipefail && curl -sSL https://deb.nodesource.com/setup_14.x  |  bash -"]
RUN apt-get -y update && apt-get install -y nodejs
RUN npm config set cafile /etc/ssl/certs/ca-certificates.crt -g

现在有趣的是我需要两个证书文件。 RootCa.crt 是所有公司服务器的自签名证书,PoroxyCertificate.crt 包含该证书,但它还有一个额外的中间 SubCA 证书。代理正在响应长度为 3 的证书链。

现在update-ca-certificates 扫描目录/usr/local/share/ca-certificates/ 以获取新证书并更新/etc/ssl/certs/ca-certificates.crt,其中将包含比那些自定义证书更多的内容。

将此/etc/ssl/certs/ca-certificates.crt 提供给npm config 中的cafile 可解决使用代理时证书的所有问题。

重要提示

npm v6 证书错误经常导致npm ERR! Maximum call stack size exceeded 非常令人困惑(我什至故意破坏证书以验证此问题),日志文件包含如下内容:

RangeError: Maximum call stack size exceeded
    at isDepOptional (/usr/lib/node_modules/npm/lib/install/deps.js:417:24)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:441:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)
    at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:457:9)

我找到了一些issue about that,但这不会在 v6 中修复。

【讨论】:

【参考方案3】:

转到环境变量并删除或​​将其设置为空

HTTP_PROXY 和 HTTPS_PROXY

它也将解决企业环境的代理问题

【讨论】:

【参考方案4】:

只需打开新终端并输入npm config editnpm config -g edit。重置为默认值。在关闭终端之后,打开新终端并键入npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install <package>,如果您需要全局,只需添加-g

它对我有用,希望它对你有用:)

【讨论】:

【参考方案5】:

我这样解决了这个问题:

    我运行这个命令:

    npm config set strict-ssl false
    

    然后将 npm 设置为使用 http,而不是 https:

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

    然后我使用以下语法安装包:

    npm --proxy http://username:password@cacheaddress.com.br:80 install packagename
    

如果代理不需要您进行身份验证,请跳过 username:password 部分

编辑:我的一个朋友刚刚指出,您可以通过设置 BOTH HTTP_PROXY 和 HTTPS_PROXY 环境变量,然后正常发出命令,让 NPM 在代理后面工作npm install express(例如)

EDIT2:正如@BStruthers 评论的那样,请记住包含“@”的密码将无法正确解析,如果包含@,则将整个密码放在引号中

【讨论】:

请注意,如果您的密码包含“@”,npm 将无法正确解析您的代理设置。一个潜在的解决方法是在 npm 配置中放置一个虚假的用户名:密码,并使用本地代理(如 fiddler)修改请求的 Proxy-Authorization 标头以具有正确的用户名:密码。请记住,存储在 Proxy-Authorization 中的 username:password 是 base64 编码的。 如果您的密码包含@符号,您可以通过将您的用户名和密码放在引号内来传递它。 您的密码中可以包含特殊字符,但它们必须是 url 编码的。因此,如果您的密码是 my@password,那么您的 .npmrc 文件中的密码部分应该是 my%40password。在某些情况下,将其放在引号中是可行的,但对其进行编码是万无一失的。 另一个问题!如果您之前设置了系统变量HTTP-PROXY,请确保清除它们! 你的传奇!我已经放弃尝试让 npm 在工作中工作,但这最终解决了它。【参考方案6】:

设置npm代理

对于HTTP

npm config set proxy http://proxy_host:port

对于HTTPS

如果有,使用https代理地址

npm config set https-proxy https://proxy.company.com:8080

否则重用http代理地址

npm config set https-proxy http://proxy.company.com:8080

注意:https-proxy 的协议不是https,而是http

【讨论】:

请注意,https-proxy 的协议不是“https”,而是“http”。改变这个解决了我的问题。 @peterhil 感谢您的提示。这很疯狂,但我花了几个小时用“https”解决这个问题。知道为什么会这样吗? @ManojNV,与代理服务器的连接未加密。它不是与代理服务器交谈 HTTPS,只是 HTTP。负载是客户端和目标服务器之间的 SSL。如果它是代理服务器的 HTTPS,那么事情将被加密/解密两次。 微妙。非常感谢@peterhil 非常感谢你们在这里提出的所有好主意!我使用命令 1、3,然后运行此命令 npm config set registry "http://registry.npmjs.org/"。它工作:)【参考方案7】:

这是我遵循的步骤(Windows):

    编辑以下文件C:\Users\<WIN_USERNAME>\.npmrc

    将证书从以下地址导出到您的文件系统:https://registry.npmjs.org

    导航到导出的证书位置并发出以下命令:

    npm config set cafile npm_certificate.cer

    将以下更改添加到文件中: registry=https://registry.npmjs.org/ strict-ssl=false https-proxy=http://[proxy_user]:[proxy_password]@[proxy_ip]:[proxy_port]/ cafile=npm_certificate.cer

现在你应该准备好了!

【讨论】:

【参考方案8】:

最后,我设法通过 AD 身份验证解决了这个问题。我不得不执行:

npm config set proxy http://domain%5Cuser:password@proxy:port/
npm config set https-proxy http://domain%5Cuser:password@proxy:port/

对任何特殊字符(如反斜杠或#)进行 URL 编码非常重要 就我而言,我必须编码

    backshlash 与 %5C 所以 domain\user willdomain%5Cuser #%23%0A 签名,所以像 Password#2 这样的密码将是 Password%23%0A2

我还添加了以下设置:

npm config set strict-ssl false
npm config set registry http://registry.npmjs.org/

【讨论】:

我已经为 npm 设置了代理值:npm config set proxy 127.0.0.1:8080,npm config set http-proxy 127.0.0.1:8080,npm config set https-proxy 127.0.0.1:8080。使用这些代理设置,我无法访问 https 页面【参考方案9】:

对于这个问题,上面有很多答案,但没有一个对我有用。他们都提到要添加http:// 前缀。所以我也加了。都失败了。

在我不小心删除了http:// 前缀后,它终于可以工作了。最终配置是这样的:

npm config set registry http://registry.npmjs.org/
npm config set http-proxy ip:port
npm config set https-proxy ip:port
npm config set proxy ip:port
npm set strict-ssl false

我不知道这背后的逻辑,但它奏效了。如果以上答案都不适合您,也许您可​​以尝试这种方式。希望这个有用。

【讨论】:

【参考方案10】:

最后捆绑不同的答案后,@Kayvar 答案的前四行帮助我解决了问题:

npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false

【讨论】:

【参考方案11】:

如有疑问,请像我一样尝试所有这些命令:

npm config set registry http://registry.npmjs.org/
npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080
npm config set strict-ssl false
set HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
set HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTPS_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export HTTP_PROXY=http://myusername:mypassword@proxy.us.somecompany:8080
export http_proxy=http://myusername:mypassword@proxy.us.somecompany:8080

npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 \
--without-ssl --insecure -g install

=======

更新

将您的设置放入~/.bashrc~/.bash_profile,这样您每次打开新终端窗口时就不必担心您的设置!

如果您的公司和我一样,我必须经常更改密码。所以我将以下内容添加到我的 ~/.bashrc 或 ~/.bash_profile 中,这样每当我打开终端时,我就知道我的 npm 是最新的!

    只需将以下代码粘贴到您的 ~/.bashrc 文件底部即可:

    ######################
    # User Variables (Edit These!)
    ######################
    username="myusername"
    password="mypassword"
    proxy="mycompany:8080"
    
    ######################
    # Environement Variables
    # (npm does use these variables, and they are vital to lots of applications)
    ######################
    export HTTPS_PROXY="http://$username:$password@$proxy"
    export HTTP_PROXY="http://$username:$password@$proxy"
    export http_proxy="http://$username:$password@$proxy"
    export https_proxy="http://$username:$password@$proxy"
    export all_proxy="http://$username:$password@$proxy"
    export ftp_proxy="http://$username:$password@$proxy"
    export dns_proxy="http://$username:$password@$proxy"
    export rsync_proxy="http://$username:$password@$proxy"
    export no_proxy="127.0.0.10/8, localhost, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16"
    
    ######################
    # npm Settings
    ######################
    npm config set registry http://registry.npmjs.org/
    npm config set proxy "http://$username:$password@$proxy"
    npm config set https-proxy "http://$username:$password@$proxy"
    npm config set strict-ssl false
    echo "registry=http://registry.npmjs.org/" > ~/.npmrc
    echo "proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "strict-ssl=false" >> ~/.npmrc
    echo "http-proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "http_proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "https_proxy=http://$username:$password@$proxy" >> ~/.npmrc
    echo "https-proxy=http://$username:$password@$proxy" >> ~/.npmrc
    
    ######################
    # WGET SETTINGS
    # (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
    ######################
    echo "https_proxy = http://$username:$password@$proxy/" > ~/.wgetrc
    echo "http_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
    echo "ftp_proxy = http://$username:$password@$proxy/" >> ~/.wgetrc
    echo "use_proxy = on" >> ~/.wgetrc
    
    ######################
    # CURL SETTINGS
    # (Bonus Settings! Not required for npm to work, but needed for lots of other programs)
    ######################
    echo "proxy=http://$username:$password@$proxy" > ~/.curlrc
    

    然后在您粘贴的代码中编辑“用户名”、“密码”和“代理”字段。

    打开一个新终端

    通过运行 npm config listcat ~/.npmrc 检查您的设置

    尝试使用

    安装您的模块 npm install __,或 npm --without-ssl --insecure install __,或 使用npm --without-ssl --insecure --proxy http://username:password@proxy:8080 install __ 覆盖您的代理设置。 如果您希望模块在全球范围内可用,请添加选项-g

【讨论】:

最后一个命令对我有用。之前的都失败了 我阅读了大约 50 个关于这个该死的代理配置的答案...唯一有效的是您的答案...谢谢!!! 谢谢大家!!很高兴它正在工作!这一直是工作中的一个巨大的头痛,所以我很高兴我可以帮助别人:P +1。这行得通。我使用命令-npm config set registry http://registry.npmjs.org/npm config set proxy http://myusername:mypassword@proxy.us.somecompany:8080npm config set https-proxy http://myusername:mypassword@proxy.us.somecompany:8080npm config set strict-ssl false 进行 npm 配置,然后使用 npm --proxy http://myusername:mypassword@proxy.us.somecompany:8080 --without-ssl --insecure -g install packagename 安装 npm 包。谢谢 经过三天的尝试,这个解决方案对我有用。【参考方案12】:

虽然已经有很多好的建议,但对于我的环境(Windows 7,使用 PowerShell)和可用的 node.js 的最新版本(v8.1.2),上述所有内容都不起作用,除非我遵循 brunowego 设置.

所以检查你的设置:

npm config list

代理背后的设置:

npm config set registry http://registry.npmjs.org/
npm config set http-proxy http://username:password@ip:port
npm config set https-proxy http://username:password@ip:port
npm config set proxy http://username:password@ip:port
npm set strict-ssl false

希望这会为某人节省时间

【讨论】:

如何找到我的代理地址? @Robin 一种方法,如果使用 Windows,IE 会存储它们。你可以在IE下查看连接下的局域网设置,它会在那里显示。 @Robin 当然取决于浏览器,但通常在设置下 @Robin 在浏览器的设置下你应该看到/检查代理设置。通常有一个带有 .pac 的文件,其中最后一个应该是:PROXY YourProxyAdress:PORT 我已经为 npm 设置了代理值:npm config set proxy 127.0.0.1:8080,npm config set http-proxy 127.0.0.1:8080,npm config set https-proxy 127.0.0.1:8080。使用这些代理设置,我无法访问 https 页面【参考方案13】:
npm config set proxy <http://...>:<port_number>
npm config set registry http://registry.npmjs.org/

这解决了我的问题。

【讨论】:

关键是更改注册表的链接:而不是我之前使用的 https 到 http 链接。【参考方案14】:

在我的情况下,我忘记在我的配置文件中设置“http://”(可以在 C:\Users\[USERNAME]\.npmrc 中找到)代理地址。所以不要有

proxy=http://[IPADDRESS]:[PORTNUMBER]
https-proxy=http://[IPADDRESS]:[PORTNUMBER]

我有

proxy=[IPADDRESS]:[PORTNUMBER]
https-proxy=[IPADDRESS]:[PORTNUMBER]

这当然没有用,但错误消息也没有多大帮助......

【讨论】:

【参考方案15】:

vim ~/.npmrc 在您的 Linux 机器中并添加以下内容。不要忘记添加registry 部分,因为这在很多情况下会导致失败。

proxy=http://<proxy-url>:<port>
https-proxy=https://<proxy-url>:<port>
registry=http://registry.npmjs.org/

【讨论】:

许多代理支持隧道 https 请求,但它们不会处理与自己的 https 连接。因此,遇到麻烦时,尝试将https-proxy=https://..修改为https-proxy=http://..【参考方案16】:

在 Windows 系统上

尝试删除代理和注册表设置(如果已设置)并通过命令行在命令行上设置环境变量

SET HTTP_PROXY=http://username:password@domain:port
SET HTTPS_PROXY=http://username:password@domain:port

然后尝试运行 npm install。这样,您将不会在 .npmrc 中设置代理,但对于该会话,它会起作用。

【讨论】:

这对我有用。等号似乎让这一切正常工作。在此之前我只是使用SET HTTP_PROXY http://username:password@domain:port,但切换到SET HTTP_PROXY=http://username:password@domain:port 似乎一切正常【参考方案17】:

许多应用程序(例如 npm)可以使用来自用户环境变量的代理设置。

您可以将以下变量添加到您的环境中

http://user:password@proxyAddress:proxyPort

例如,如果您有 Windows,您可以按如下方式添加代理:

【讨论】:

【参考方案18】:

这对我有用-

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
npm set strict-ssl=false

【讨论】:

我已经为 npm 设置了代理值:npm config set proxy 127.0.0.1:8080,npm config set http-proxy 127.0.0.1:8080,npm config set https-proxy 127.0.0.1:8080。使用这些代理设置,我无法访问 https 页面【参考方案19】:

我的问题归结为我的一个愚蠢的错误。由于我很快将代理放入 Windows *.bat 文件(http_proxy、https_proxy 和 ftp_proxy),我忘记转义 url 编码域\用户 (%5C) 的特殊字符和带问号的密码“?” (%3F)。也就是说,一旦你有了编码的命令,别忘了在bat文件命令中转义'%'。

我变了

set http_proxy=http://domain%5Cuser:password%3F@myproxy:8080

set http_proxy=http://domain%%5Cuser:password%%3F@myproxy:8080

也许这是一个边缘案例,但希望它可以帮助某人。

【讨论】:

【参考方案20】:

对我来说,尽管 python 等都可以工作,但我们的公司代理 npm 不能。

我试过了

npm config set proxy http://proxyccc.xxx.ca:8080 npm config set https-proxy https://proxyccc.xxx.ca:8080 npm config set registry http://registry.npmjs.org/

按照指示,但不断收到相同的错误。

只有当我删除 https-proxy https://proxyccc.xxx.ca:8080 来自 .npmrc 文件 那 npm install electron --save-dev 工作

【讨论】:

您的https-proxy 可能不是https:。至少,为每个端口设置相同的端口可能是不正确的,但我认为它们可能具有相同的值。【参考方案21】:

尝试在 C:\Users\.npmrc 中找到 .npmrc

然后打开(记事本),写入并保存在里面:

proxy=http://<username>:<pass>@<proxyhost>:<port>

PS:请去掉“”!!

【讨论】:

【参考方案22】:

在 cmd 或 GIT Bash 或其他提示符下使用以下命令

$ npm 配置设置代理“http://192.168.1.101:4128”

$ npm config set https-proxy "http://192.168.1.101:4128"

其中 192.168.1.101 是代理 ip,4128 是端口。根据您的代理设置进行更改。它对我有用。

【讨论】:

我必须使用域进行身份验证,并使用转义的反斜杠:使用此字符串 %5C 。终于成功了!【参考方案23】:

当我在代理设置中没有 http/http 前缀时,即使代理主机和端口是正确的值,npm 也会失败。它仅在添加协议前缀后才起作用。

【讨论】:

【参考方案24】:

我尝试了所有这些选项,但由于某种原因我的代理没有任何选项。然后,出于绝望/绝望,我在我的 Git Bash shell 中随机尝试了curl,它成功了。

使用

取消设置所有代理选项
npm config rm proxy
npm config rm https-proxy

然后在我的 Git Bash shell 中运行 npm install 效果很好。我不知道它是如何为代理正确设置的,并且 Windows cmd 提示不是,但它有效。

【讨论】:

【参考方案25】:

这对我有用。 设置 http 和 https 代理。

npm 配置设置代理http://proxy.company.com:8080 npm 配置设置 https-proxy http://proxy.company.com:8080

【讨论】:

【参考方案26】:

这在 Windows 中适用于我:

npm config set proxy http://domain%5Cuser:pass@host:port

如果您不在任何域中,请使用:

npm config set proxy http://user:pass@host:port

如果您的密码包含特殊字符,例如"@: 等,请将它们替换为其 URL 编码值。例如"->%22@->%40:->%3A%5C 用于字符\

【讨论】:

感谢您的建议,这对我有用。您可以使用 ctrl+shift+j 打开您的 javascript 控制台并输入 encodeURIComponent("YourP@ssword") 以获取密码的编码版本。 我已经为 npm 设置了代理值:npm config set proxy 127.0.0.1:8080,npm config set http-proxy 127.0.0.1:8080,npm config set https-proxy 127.0.0.1:8080。使用这些代理设置,我无法访问 https 页面 您的代理是否在本地主机 (127.0.0.1) 上?【参考方案27】:

要设置 http 代理,请设置 -g 标志:

sudo npm config set proxy http://proxy_host:port -g

对于 https 代理,再次确保设置了 -g 标志:

sudo npm config set https-proxy http://proxy_host:port -g

【讨论】:

-g是什么意思? 全局设置,不用于本地安装 我已经为 npm 设置了代理值:npm config set proxy 127.0.0.1:8080,npm config set http-proxy 127.0.0.1:8080,npm config set https-proxy 127.0.0.1:8080。使用这些代理设置,我无法访问 https 页面。我也试过 -g 【参考方案28】:

虽然我用配置设置代理,但问题没有解决,但之后 这个对我有用:

npm --https-proxy http://XX.AA.AA.BB:8080 install cordova-plugins

npm --proxy http://XX.AA.AA.BB:8080 安装

【讨论】:

这个对我有用,没有其他变化。打开命令窗口并在上面使用它会工作【参考方案29】:
$ npm config set proxy http://login:pass@host:port
$ npm config set https-proxy http://login:pass@host:port

【讨论】:

请添加一些cmets。【参考方案30】:

您是否尝试过命令行选项而不是 .npmrc 文件?

我认为像 npm --proxy http://proxy-server:8080/ install package-name 这样的东西对我有用。

我还看到了以下内容: npm config set proxy http://proxy-server:8080/

【讨论】:

+1 我试过其他的,这是对我有用的。来自 Renato Gama 的 auth 部分 我已经设置了环境变量: set HTTPS_PROXY=127.0.0.1:8080 set HTTP_PROXY=127.0.0.1:8080 另外,已经为 npm 设置了代理值: npm config set proxy 127.0.0.1:8080 npm配置设置 http-proxy 127.0.0.1:8080 npm 配置设置 https-proxy 127.0.0.1:8080。使用这些代理设置,我无法访问 https 页面

以上是关于有没有办法让 npm install (命令)在代理后面工作?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 AWS S3 “npm install”?

npm install 如果 package.json 被修改

npm install:有没有办法忽略 package.json 中的特定依赖项

vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法

npm install 安装-4048错误

npm install -g cordova err 解决办法