V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChrisFreeMan
V2EX  ›  程序员

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

  •  
  •   ChrisFreeMan · 65 天前 · 3684 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前遇到的问题是在设置代理的情况下,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/
    
    60 条回复    2022-11-26 18:18:37 +08:00
    coffeedeveloper
        1
    coffeedeveloper  
       65 天前
    你可以直接用 CNPM ,或者用阿里的国内镜像 ( https://npmmirror.com/)[https://npmmirror.com/]
    beisilu
        2
    beisilu  
       65 天前
    warning 而已,能用就行
    ChrisFreeMan
        3
    ChrisFreeMan  
    OP
       65 天前
    @coffeedeveloper 多谢回复,这个将作为我的替代方案。
    ChrisFreeMan
        4
    ChrisFreeMan  
    OP
       65 天前
    @beisilu 😂warning 好难受。
    Musong
        5
    Musong  
       65 天前
    ```
    npm config set strict-ssl false
    ```

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

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

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

    npm config set proxy=http://127.0.0.1:1087
    ChrisFreeMan
        18
    ChrisFreeMan  
    OP
       65 天前
    @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  
       65 天前
    不用对 npm 设代理,直接全局 .npmrc 设置为淘宝源就好了。有切换需求可以上 nrm
    kongkx
        20
    kongkx  
       65 天前 via iPhone
    @ChrisFreeMan 最好 verbose 看看是哪里的问题
    imMetaverse
        21
    imMetaverse  
       65 天前
    @ChrisFreeMan 我一般这样就可以的 我一般不用全局
    Kenmin
        22
    Kenmin  
       65 天前   ❤️ 1
    nrm 解君愁
    skybig
        23
    skybig  
       65 天前
    如果是自己电脑,可以用 clash 。tun 模式下本机流量都走代理,不用改源,更新很方便。
    wangsd
        24
    wangsd  
       65 天前   ❤️ 1
    可以换成腾讯的源 npm config set registry http://mirrors.cloud.tencent.com/npm/
    nieyujiang
        25
    nieyujiang  
       65 天前
    clashx pro 的增强模式.然后把终端的 export 设置代理干掉.
    shakukansp
        26
    shakukansp  
       65 天前
    npm 不支持 socks5
    cnhongwei
        27
    cnhongwei  
       65 天前
    如果你的 1087 是 socks5 代理的话,按资料说的 npm 不支持 socks5 代理,你应使用 http 及 https 代理。你看一下你的软件,大部分软件都支持 socks5 和 http(s)代理,只是端口不一致而已,如果软件不支持 https 代理,那就使用一个把 socks5 转 https 代理的软件。
    Huelse
        28
    Huelse  
       65 天前
    echo "registry=https://registry.npmmirror.com/" >> ~/.npmrc

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

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


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

    npm config set proxy="http://ip:port"
    star7th
        37
    star7th  
       65 天前   ❤️ 1
    直接在命令行运行 npm config set registry https://registry.npmmirror.com


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

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

    有的软件认大写,有的认小写,有的都认,有的都不认。具体软件具体分析。
    systemcall
        54
    systemcall  
       65 天前 via Android
    你要是在家的话,直接弄个软路由不就行了?路由器上面跑代理,电脑上什么代理软件都不需要
    humbass
        55
    humbass  
       65 天前
    完美的解决方法是: 挂一个路由器,路由执行科学上网,国外 IP 一律代理,本机不需要做任何设置;
    bthulu
        56
    bthulu  
       65 天前
    还是挂代理, 国内镜像多多少少都有缺库, 版本对不上的问题
    sunmker
        57
    sunmker  
       64 天前
    路由器上代理,很方便的
    zxCoder
        58
    zxCoder  
       64 天前
    tun 模式
    n18255447846
        59
    n18255447846  
       64 天前
    npm config set proxy
    mmdsun
        60
    mmdsun  
       64 天前
    tun 模式 或者 (推荐)路由器上直接安装代理软件,这样连接的所有设备都可以代理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   2498 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 01:07 · PVG 09:07 · LAX 17:07 · JFK 20:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.