V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX  ›  Node.js

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

  •  
  •   rizon · 15 小时 42 分钟前 via Android · 809 次点击

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

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

    第 1 条附言  ·  11 小时 21 分钟前
    问题最后找到了,确实是系统环境变量导致的,我在 docker 里启动就没问题。
    但我不知道是哪个环境变量影响的。也不知道本地调试时该如何避免变量影响。
    25 条回复    2025-01-21 08:35:17 +08:00
    langhuishan
        1
    langhuishan  
       15 小时 22 分钟前
    跨域了
    importmeta
        2
    importmeta  
       15 小时 18 分钟前
    用 trycatch 包裹 axios 请求 打印出 error
    rizon
        3
    rizon  
    OP
       15 小时 18 分钟前 via Android
    @langhuishan 后端 nodejs 请求,没有跨域一说
    rizon
        4
    rizon  
    OP
       15 小时 10 分钟前
    @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
       14 小时 55 分钟前
    真的太诡异了,到底是哪里问题啊,python 请求百分百成功,一换 nodejs 就超时。。。。
    liyang582
        6
    liyang582  
       14 小时 23 分钟前
    盲猜是 proxy 的问题,你搜一下 axios 或者 fetch 的 proxy 相关设置,把你的本地的 proxy 配置手动配置一下。
    jiangzm
        7
    jiangzm  
       14 小时 19 分钟前
    在服务器上使用 curl 请求看看, 排除下是不是本地根证书问题
    rizon
        8
    rizon  
    OP
       14 小时 12 分钟前
    @liyang582 #6 没有任何 http 代理,python 和 nodejs 在同一个机器上。
    @jiangzm #7

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

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

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

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

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

    后端 node 的 fetch 貌似不会帮你加,所以需要你显式加。python 可以估计是 py 的请求包会自动帮你加。至于偶尔能成功一次,可能是你换了其他的请求库?
    krapnik
        19
    krapnik  
       12 小时 36 分钟前
    你需要的是这个: https://curlconverter.com/
    rizon
        20
    rizon  
    OP
       12 小时 6 分钟前
    @xiaoming1992 #18 哎,错觉啊,没解决,,就偶发好了一下下,刚才一试又不行了。。。
    xiaoming1992
        21
    xiaoming1992  
       11 小时 30 分钟前 via Android
    🤣
    rizon
        22
    rizon  
    OP
       11 小时 21 分钟前
    问题最后找到了,确实是系统环境变量导致的,我在 docker 里启动就没问题。
    但我不知道是哪个环境变量影响的。也不知道本地调试时该如何避免变量影响。
    ragnaroks
        23
    ragnaroks  
       11 小时 20 分钟前
    设置 useragent 为浏览器的值试试( navigator.userAgent )
    chenliang0571
        24
    chenliang0571  
       10 小时 46 分钟前
    @rizon process.env 看过了吗?有没有相关的?
    wangtian2020
        25
    wangtian2020  
       3 小时 31 分钟前
    像是 DNS 问题啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4316 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:07 · PVG 12:07 · LAX 20:07 · JFK 23:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.