
国内 aws 机器。 原本是 python 代码,对 jina.ai 的 embedding API 接口发 reques 请求,请求是可以成功的。 但是换成 nodejs 后,用 fetch 或 axios 请求,总会 connect timeout 。
找不到解决办法,特来求助大佬们,谢谢
1 langhuishan 319 天前 跨域了 |
2 importmeta 319 天前 用 trycatch 包裹 axios 请求 打印出 error |
3 rizon OP @langhuishan 后端 nodejs 请求,没有跨域一说 |
4 rizon OP @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 |
5 rizon OP 真的太诡异了,到底是哪里问题啊,python 请求百分百成功,一换 nodejs 就超时。。。。 |
6 galileo2ai 319 天前 盲猜是 proxy 的问题,你搜一下 axios 或者 fetch 的 proxy 相关设置,把你的本地的 proxy 配置手动配置一下。 |
7 jiangzm 319 天前 在服务器上使用 curl 请求看看, 排除下是不是本地根证书问题 |
8 rizon OP |
9 galileo2ai 319 天前 |
10 htf176 319 天前 via iPhone 可能是 node 版本问题,构建时使用的 ssl 库版本过低,使用高版本 node 试试 |
11 rizon OP |
13 importmeta 319 天前 你这个数组放哪传的,URL 参数还是 Body 还是用 multipart/form-data, 其他我就不知道了. |
14 xiaoming1992 319 天前 via Android 试试在 header 里添加 content-type (如果本来显式声明了的话就移除) |
15 humbass 319 天前 via Android 换语言大概率是发的东西不一样 |
16 rizon OP @xiaoming1992 删除掉 content type 可以了!!!真的是这个问题!!!感谢!!! 而且你这么一说就提醒我了,过去我也遇到过类似的问题,也是因为多写了 content type 导致的,这会没想起来这事。 但是我不知道为什么会有这个问题。。。。 |
18 xiaoming1992 319 天前 via Android @rizon #16 以下内容我也不太确定,你参考一下吧。 前端使用 fetch 时浏览器会自动帮你加 content-type ,这时候不能显式设置 content-type 。 后端 node 的 fetch 貌似不会帮你加,所以需要你显式加。python 可以估计是 py 的请求包会自动帮你加。至于偶尔能成功一次,可能是你换了其他的请求库? |
19 krapnik 319 天前 你需要的是这个: https://curlconverter.com/ |
20 rizon OP @xiaoming1992 #18 哎,错觉啊,没解决,,就偶发好了一下下,刚才一试又不行了。。。 |
21 xiaoming1992 319 天前 via Android |
22 rizon OP 问题最后找到了,确实是系统环境变量导致的,我在 docker 里启动就没问题。 但我不知道是哪个环境变量影响的。也不知道本地调试时该如何避免变量影响。 |
23 ragnaroks 319 天前 设置 useragent 为浏览器的值试试( navigator.userAgent ) |
24 chenliang0571 319 天前 @rizon process.env 看过了吗?有没有相关的? |
25 wangtian2020 319 天前 像是 DNS 问题啊 |
26 DICK23 319 天前 环境变量的问题我昨天也遇到了,使用 dotenv 加载环境变量时,直接通过代码运行没问题,通过 bun 运行 script 中的脚本时没法自己调用 dotenv,需要手动在运行命令前加上 |