最近换代理软件后没法玩 Node 了,各位大佬是怎么解决 npm 挂代理的问题的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ChrisFreeMan
V2EX    程序员

最近换代理软件后没法玩 Node 了,各位大佬是怎么解决 npm 挂代理的问题的

  •  
  •   ChrisFreeMan 2022-11-25 12:54:32 +08:00 6847 次点击
    这是一个创建于 1120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前遇到的问题是在设置代理的情况下,npm install 命令一直失败,原因找了下貌似是 https 连接的问题, 我是通过.zshrc 文件来指向本地的代理地址,通过这个地址指向我的 ss 代理。

    以下是设置其一

    export http_proxy="http://127.0.0.1:1087" export https_proxy="http://127.0.0.1:1087" 

    第二种设置是指向 socks5 本地地址,然后都失败了。

    curl 和 brew 命令都正常。

    目前唯一有用的方法是将 npm 的仓库地址指向为 http 地址

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

    虽然可以用,但是每次安装包都会发出警告,这就很烦了,大佬们是怎么搞定的。

    npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plaintext http to connect. Please visit the GitHub blog for more information: https://github.blog/2021-08-23-npm-registry-deprecating-tls-1-0-tls-1-1/ npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plaintext http to connect. Please visit the GitHub blog for more information: https://github.blog/2021-08-23-npm-registry-deprecating-tls-1-0-tls-1-1/ 
    61 条回复    2023-09-01 11:22:07 +08:00
    coffeedeveloper
        1
    coffeedeveloper  
       2022-11-25 14:04:30 +08:00
    你可以直接用 CNPM ,或者用阿里的国内镜像 ( https://npmmirror.com/)[https://npmmirror.com/]
    beisilu
        2
    beisilu  
       2022-11-25 14:09:13 +08:00
    warning 而已,能用就行
    ChrisFreeMan
        3
    ChrisFreeMan  
    OP
       2022-11-25 14:09:53 +08:00
    @coffeedeveloper 多谢回复,这个将作为我的替代方案。
    ChrisFreeMan
        4
    ChrisFreeMan  
    OP
       2022-11-25 14:10:23 +08:00
    @beisilu warning 好难受。
    Musong
        5
    Musong  
       2022-11-25 14:11:25 +08:00
    ```
    npm config set strict-ssl false
    ```

    这个呢?能好使不?
    ChrisFreeMan
        6
    ChrisFreeMan  
    OP
       2022-11-25 14:13:49 +08:00
    @Musong 单独用它还不行,这个就是和上面那个指向 http 仓库的设置一起用的。
    shintendo
        7
    shintendo  
       2022-11-25 14:13:56 +08:00   1
    用户目录 /.npmrc 文件,写上淘宝镜像和常见二进制包镜像,解决 99%场景,参考 https://gist.github.com/niaodan2b/258909bf2e6249ada57d51b58184f067

    不建议用 cnpm ,cnpm 和 npm 的行为不一样的
    ChrisFreeMan
        8
    ChrisFreeMan  
    OP
       2022-11-25 14:15:44 +08:00
    @shintendo 多谢,又多了好多配置啊,太难了。就没有更方便的办法了吗。
    FightPig
        9
    FightPig  
       2022-11-25 14:19:19 +08:00
    @coffeedeveloper 不知道啥情况,有的 npm 包更新好久了,淘宝的镜像却找不到版本,
    shintendo
        10
    shintendo  
       2022-11-25 14:19:52 +08:00
    @ChrisFreeMan ?不需要其它配置呀,就这个文件内容改成我这样就行了。不用手动设置镜像,也不用设置代理。
    pathletboy
        11
    pathletboy  
       2022-11-25 14:20:46 +08:00
    要不试试 proxychains4 ?
    ChrisFreeMan
        12
    ChrisFreeMan  
    OP
       2022-11-25 14:22:06 +08:00
    @shintendo 好,我先收藏了,可以拿来应急也挺好的
    ChrisFreeMan
        13
    ChrisFreeMan  
    OP
       2022-11-25 14:33:50 +08:00
    @pathletboy 这种外挂软件的方式想过了,主要不太想用,主要是我觉得很奇怪,因为 pip 、git 、cur 、brew 之类的都没有这样的问题,所以想问下大家有没有办法,我也不太喜欢太多配置。
    kongkx
        14
    kongkx  
       2022-11-25 15:04:06 +08:00 via iPhone
    设置 .npmrc

    proxy=http://127.0.0.1:1087
    ChrisFreeMan
        15
    ChrisFreeMan  
    OP
       2022-11-25 15:05:47 +08:00
    @kongkx 这个和在 zshrc 终端环境配置里的代理设置是一样的,我都试过了。
    imMetaverse
        16
    imMetaverse  
       2022-11-25 15:14:42 +08:00
    一般在终端上
    export http_proxy=http://127.0.0.1:1087
    export https_proxy=http://127.0.0.1:1087
    设置后 就行 关闭后失效
    eason1874
        17
    eason1874  
       2022-11-25 15:16:05 +08:00
    我是修改 npm 设置,像这样

    npm config set proxy=http://127.0.0.1:1087
    ChrisFreeMan
        18
    ChrisFreeMan  
    OP
       2022-11-25 15:24:46 +08:00
    @eason1874
    @imMetaverse
    export http_proxy=http://127.0.0.1:1087 写入到终端环境和 npm config set proxy=http://127.0.0.1:1087 都是一样的,没有区别,一个是全局终端环境,一个是针对 npm 的。
    gqbre
        19
    gqbre  
       2022-11-25 15:27:49 +08:00
    不用对 npm 设代理,直接全局 .npmrc 设置为淘宝源就好了。有切换需求可以上 nrm
    kongkx
        20
    kongkx  
       2022-11-25 15:32:37 +08:00 via iPhone
    @ChrisFreeMan 最好 verbose 看看是哪里的问题
    imMetaverse
        21
    imMetaverse  
       2022-11-25 15:34:35 +08:00
    @ChrisFreeMan 我一般这样就可以的 我一般不用全局
    Kenmin
        22
    Kenmin  
       2022-11-25 15:34:42 +08:00   1
    nrm 解君愁
    skybig
        23
    skybig  
       2022-11-25 15:35:51 +08:00
    如果是自己电脑,可以用 clash 。tun 模式下本机流量都走代理,不用改源,更新很方便。
    wangsd
        24
    wangsd  
       2022-11-25 15:50:41 +08:00   1
    可以换成腾讯的源 npm config set registry http://mirrors.cloud.tencent.com/npm/
    ZeoKarl
        25
    ZeoKarl  
       2022-11-25 16:07:01 +08:00
    clashx pro 的增强模式.然后把终端的 export 设置代理干掉.
    shakukansp
        26
    shakukansp  
       2022-11-25 16:10:01 +08:00
    npm 不支持 socks5
    cnhongwei
        27
    cnhongwei  
       2022-11-25 16:13:50 +08:00
    如果你的 1087 是 socks5 代理的话,按资料说的 npm 不支持 socks5 代理,你应使用 http 及 https 代理。你看一下你的软件,大部分软件都支持 socks5 和 http(s)代理,只是端口不一致而已,如果软件不支持 https 代理,那就使用一个把 socks5 转 https 代理的软件。
    Huelse
        28
    Huelse  
       2022-11-25 16:17:18 +08:00
    echo "registry=https://registry.npmmirror.com/" >> ~/.npmrc

    这个域名一般都在白名单( DIRECT )里
    yohole
        29
    yohole  
       2022-11-25 16:30:10 +08:00
    这个问题劝退了无数新手,包括我因为这个推迟了很久才接触了 node ,很伤感
    sukidesuka
        30
    sukidesuka  
       2022-11-25 16:40:14 +08:00
    一般 200 块钱买个软路由,然后上面跑个 shellclash
    lovepplforever
        31
    lovepplforever  
       2022-11-25 16:43:03 +08:00
    nodejs 的 http 没有实现环境变量 http_proxy 代理的功能
    antonius
        32
    antonius  
       2022-11-25 16:48:56 +08:00
    很久没写 js 了。以前安装 nrm 然后设置 repo ,选择国内的即可。要么设置 proxy 。
    ChrisFreeMan
        33
    ChrisFreeMan  
    OP
       2022-11-25 16:49:52 +08:00
    我刚刚试了下 deno 创建 reac 的项目的速度,brew install deno 然后走流程 https://deno.land/x/[email protected]
    整个过程 1 分钟不到,我哭了,这才是我想要的啊。node 折腾几天了,要是 deno 生态能起来就好了
    ragnaroks
        34
    ragnaroks  
       2022-11-25 17:09:47 +08:00
    每个项目根目录中放置 ".npmrc" 文件,内容样例

    save-exact = true
    registry = "https://registry.npmmirror.com"


    你的报错是因为你使用了普通 HTTP 请求,它让你用 HTTPS 。
    ysc3839
        35
    ysc3839  
       2022-11-25 17:12:47 +08:00
    我最近遇到不支持 SOCKS 代理的程序,又不方便弄路由器全局代理,最后选择的方案是 sniproxy+socks ,可以看看这个项目 https://github.com/NiceLabs/go-sniproxy
    hevi
        36
    hevi  
       2022-11-25 17:13:40 +08:00
    直接本机代理配好一把梭?

    npm config set proxy="http://ip:port"
    star7th
        37
    star7th  
       2022-11-25 17:16:48 +08:00   1
    直接在命令行运行 npm config set registry https://registry.npmmirror.com


    不要再折腾!
    不要再折腾!
    别听其他乱七八糟的建议。
    鉴于你能提出这个问题,估计是个新手。对新手来讲,直接执行我上面说的命令就是最省事的方式。也不用去追究什么原理。
    star7th
        38
    star7th  
       2022-11-25 17:17:46 +08:00
    这个命令放在笔记里记着。每到一个环境,无论是本机还是服务器,都用得上。
    star7th
        39
    star7th  
       2022-11-25 17:19:08 +08:00
    多年 nodejs 开发人员路过。别折腾什么走代理的方式。设置 llinux 代理可能会影响到其他程序访问网络。
    IvanLi127
        40
    IvanLi127  
       2022-11-25 17:32:29 +08:00
    有条件的话在你的设备和上级网络中间加一个网关做代理,没条件的在设备上跑一个支持全局代理的软件。一个个软件配代理烦死人
    lisxour
        41
    lisxour  
       2022-11-25 17:39:06 +08:00
    @FightPig 国内镜像多多少少(不管是 npm 还是啥镜像还是谁家的)都有这样的毛病,都声称的秒级、分钟级同步,但实际却依然很容易碰到缺库、版本低问题。我用过的 npm 、packgist 、golang 、ubuntu 等都实实在在碰到过。
    lisxour
        42
    lisxour  
       2022-11-25 17:41:46 +08:00
    @star7th 不是可能,是 100%会,HTTP_PROXY 、HTTPS_PROXY 环境变量是系统级的。
    hsfzxjy
        43
    hsfzxjy  
       2022-11-25 17:44:16 +08:00 via Android
    我都是直接 proxychains4 ,从没遇到问题
    wu67
        44
    wu67  
       2022-11-25 17:47:53 +08:00
    https://registry.npmmirror.com/ 用这个. 反正我这用得好好的, 联通 4/5G 和电信宽带都正常用
    Snowei
        45
    Snowei  
       2022-11-25 17:50:39 +08:00
    1 、pac.js 填入 npm 的地址
    2 、开全局模式
    bakaft
        46
    bakaft  
       2022-11-25 18:24:53 +08:00   1
    如果是 Windows 平台,可以用 Clash 的 TUN 模式把所有流量转发到一个虚拟网卡,很方便。这样还可以顺带解决 WSL2 和 WSL2 内容器的代理问题,一步到位。
    superrichman
        47
    superrichman  
       2022-11-25 18:33:37 +08:00 via Android
    proxychains 包治百病
    lisongeee
        48
    lisongeee  
       2022-11-25 18:38:17 +08:00
    https://registry.npmmirror.com 在 pnpm 生成的 lock 文件在 https://registry.npmjs.org/ 再次安装会出现某些包链接 404 的情况,最好不要混用镜像

    问题复现示例 [jobs/5774239890]( https://github.com/lisonge/vite-plugin-monkey/actions/runs/3459144614/jobs/5774239890)
    kwh
        49
    kwh  
       2022-11-25 20:37:29 +08:00
    export http_proxy="http://127.0.0.1:1087" 只配置这个地址不配置 https 试一试?
    hamsterbase
        50
    hamsterbase  
       2022-11-25 21:39:44 +08:00
    npm i -g nrm

    nrm use taobao
    nrm use tencent
    HugoChao
        51
    HugoChao  
       2022-11-25 21:59:44 +08:00
    国内的话换淘宝镜像基本都可以解决
    顽固的项目我推荐手机热点,真的飞快
    zsj1029
        52
    zsj1029  
       2022-11-25 23:07:32 +08:00 via iPhone
    当然是 pnpm
    butanediol2d
        53
    butanediol2d  
       2022-11-25 23:37:21 +08:00
    没有一项规定要求软件从环境变量获取代理设置一定用的是 http_proxy 和 https_proxy 。

    有的软件认大写,有的认小写,有的都认,有的都不认。具体软件具体分析。
    systemcall
        54
    systemcall  
       2022-11-26 00:57:40 +08:00 via Android
    你要是在家的话,直接弄个软路由不就行了?路由器上面跑代理,电脑上什么代理软件都不需要
    humbass
        55
    humbass  
       2022-11-26 01:00:31 +08:00
    完美的解决方法是: 挂一个路由器,路由执行科学上网,国外 IP 一律代理,本机不需要做任何设置;
    bthulu
        56
    bthulu  
       2022-11-26 08:57:45 +08:00
    还是挂代理, 国内镜像多多少少都有缺库, 版本对不上的问题
    sunmker
        57
    sunmker  
       2022-11-26 10:07:29 +08:00
    路由器上代理,很方便的
    zxCoder
        58
    zxCoder  
       2022-11-26 11:17:01 +08:00
    tun 模式
    n18255447846
        59
    n18255447846  
       2022-11-26 11:53:33 +08:00
    npm config set proxy
    mmdsun
        60
    mmdsun  
       2022-11-26 18:18:37 +08:00
    tun 模式 或者 (推荐)路由器上直接安装代理软件,这样连接的所有设备都可以代理
    ChrisFreeMan
        61
    ChrisFreeMan  
    OP
       2023-09-01 11:22:07 +08:00
    @zxCoder
    @mmdsun

    感谢两位的提示,为了后来 来的朋友,我最终解决的方法就是用他们两个说的 tun 模式。已经完美解决了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5082 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 07:49 PVG 15:49 LAX 23:49 JFK 02:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86