[求助大佬!] nodejs axios 连接超时问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX    Node.js

[求助大佬!] nodejs axios 连接超时问题

  •  
  •   rizon 319 天前 via Android 2859 次点击
    这是一个创建于 319 天前的主题,其中的信息可能已经有所发展或是发生改变。

    国内 aws 机器。 原本是 python 代码,对 jina.ai 的 embedding API 接口发 reques 请求,请求是可以成功的。 但是换成 nodejs 后,用 fetch 或 axios 请求,总会 connect timeout 。

    找不到解决办法,特来求助大佬们,谢谢

    第 1 条附言    319 天前
    问题最后找到了,确实是系统环境变量导致的,我在 docker 里启动就没问题。
    但我不知道是哪个环境变量影响的。也不知道本地调试时该如何避免变量影响。
    26 条回复    2025-01-21 13:47:56 +08:00
    langhuishan
        1
    langhuishan  
       319 天前
    跨域了
    importmeta
        2
    importmeta  
       319 天前
    用 trycatch 包裹 axios 请求 打印出 error
    rizon
        3
    rizon  
    OP
       319 天前 via Android
    @langhuishan 后端 nodejs 请求,没有跨域一说
    rizon
        4
    rizon  
    OP
       319 天前
    @importmeta #2
    Error: connect ETIMEDOUT xxxxx.xxx:443
    at createConnectionError (node:net:1648:14)
    at Timeout.internalConnectMultipleTimeout (node:net:1707:38)
    at listOnTimeout (node:internal/timers:583:11)
    at process.processTimers (node:internal/timers:519:7) {
    errno: -110,
    code: 'ETIMEDOUT',
    syscall: 'connect',
    address: 'xxx.xxx.xx',
    port: 443
    rizon
        5
    rizon  
    OP
       319 天前
    真的太诡异了,到底是哪里问题啊,python 请求百分百成功,一换 nodejs 就超时。。。。
    galileo2ai
        6
    galileo2ai  
       319 天前
    盲猜是 proxy 的问题,你搜一下 axios 或者 fetch 的 proxy 相关设置,把你的本地的 proxy 配置手动配置一下。
    jiangzm
        7
    jiangzm  
       319 天前
    在服务器上使用 curl 请求看看, 排除下是不是本地根证书问题
    rizon
        8
    rizon  
    OP
       319 天前
    @liyang582 #6 没有任何 http 代理,python 和 nodejs 在同一个机器上。
    @jiangzm #7

    最后还是没解决,我单独写了一个 python ,只用于发 request 请求,然后 nodejs 请求这个 python 服务去调用 api 接口,,,,

    我觉得是 nodejs 里的一些内置参数的问题,但是我没查出来
    galileo2ai
        9
    galileo2ai  
       319 天前
    @rizon 你本地也没开代理? jina.ai 不是海外的网站吗,因为有一些 http 代理可能是写到环境变量里面的,而 python 读了但是 nodejs 可能没读。

    当然如果你也都排除了这个可能性,那就不好说了,要是能有复现的代码我们调试一下最好
    htf176
        10
    htf176  
       319 天前 via iPhone
    可能是 node 版本问题,构建时使用的 ssl 库版本过低,使用高版本 node 试试
    rizon
        11
    rizon  
    OP
       319 天前
    @htf176 #10
    @liyang582 #9
    我怀疑是参数问题
    jinaapi 原本的参数里,input 是一个数组 { "input": [... ]} ,我在数组里是 base64 的图片数据。
    我用 python 做了代理后,在 nodejs 里用数组的这个形式发起请求后就会有问题,但是改成 input 单个对象请求就没问题了。
    rizon
        12
    rizon  
    OP
       319 天前
    @rizon #11 忽略这个吧,我搞错了,不是这个问题。
    importmeta
        13
    importmeta  
       319 天前
    你这个数组放哪传的,URL 参数还是 Body 还是用 multipart/form-data, 其他我就不知道了.
    xiaoming1992
        14
    xiaoming1992  
       319 天前 via Android   1
    试试在 header 里添加 content-type (如果本来显式声明了的话就移除)
    humbass
        15
    humbass  
       319 天前 via Android
    换语言大概率是发的东西不一样
    rizon
        16
    rizon  
    OP
       319 天前 via Android
    @xiaoming1992 删除掉 content type 可以了!!!真的是这个问题!!!感谢!!!

    而且你这么一说就提醒我了,过去我也遇到过类似的问题,也是因为多写了 content type 导致的,这会没想起来这事。
    但是我不知道为什么会有这个问题。。。。
    rizon
        17
    rizon  
    OP
       319 天前 via Android
    @rizon 而且这个问题诡异的是,请求还偶尔能成功一次。10 次里成功一次的样子
    xiaoming1992
        18
    xiaoming1992  
       319 天前 via Android
    @rizon #16 以下内容我也不太确定,你参考一下吧。

    前端使用 fetch 时浏览器会自动帮你加 content-type ,这时候不能显式设置 content-type 。

    后端 node 的 fetch 貌似不会帮你加,所以需要你显式加。python 可以估计是 py 的请求包会自动帮你加。至于偶尔能成功一次,可能是你换了其他的请求库?
    krapnik
        19
    krapnik  
       319 天前
    你需要的是这个: https://curlconverter.com/
    rizon
        20
    rizon  
    OP
       319 天前
    @xiaoming1992 #18 哎,错觉啊,没解决,,就偶发好了一下下,刚才一试又不行了。。。
    xiaoming1992
        21
    xiaoming1992  
       319 天前 via Android
    rizon
        22
    rizon  
    OP
       319 天前
    问题最后找到了,确实是系统环境变量导致的,我在 docker 里启动就没问题。
    但我不知道是哪个环境变量影响的。也不知道本地调试时该如何避免变量影响。
    ragnaroks
        23
    ragnaroks  
       319 天前
    设置 useragent 为浏览器的值试试( navigator.userAgent )
    chenliang0571
        24
    chenliang0571  
       319 天前
    @rizon process.env 看过了吗?有没有相关的?
    wangtian2020
        25
    wangtian2020  
       319 天前
    像是 DNS 问题啊
    DICK23
        26
    DICK23  
       319 天前
    环境变量的问题我昨天也遇到了,使用 dotenv 加载环境变量时,直接通过代码运行没问题,通过 bun 运行 script 中的脚本时没法自己调用 dotenv,需要手动在运行命令前加上
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2712 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 06:20 PVG 14:20 LAX 22:20 JFK 01:20
    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