You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS运行async await函数报UnhandledPromiseRejectionWarning: EPROTO错误

问题诱因
  • 目标服务端gist.githubusercontent.com近期更新了SSL配置,禁用了旧版本TLS协议(如TLS 1.0、TLS 1.1),你当前运行环境默认发起请求用的TLS版本低于服务端要求的最低版本,导致SSL握手失败
  • 本地网络环境发生变更,如新增了企业/校园SSL代理、运营商网络劫持,篡改了SSL握手过程的数据包,导致版本校验不通过
  • 本地系统自动更新了openssl相关依赖组件,和当前使用的Node.js版本内置的openssl适配异常,导致SSL协议解析报错
解决方法
  1. 强制指定请求使用高版本TLS协议,修改代码如下:
const https = require('https');
const axios = require('axios');

// 新建HTTPS Agent,指定最低支持TLS 1.2版本
const httpsAgent = new https.Agent({
  minVersion: 'TLSv1.2'
  // 临时排查可加 rejectUnauthorized: false,仅测试用,生产环境禁止开启
})

async function getStocks(){
    const { data } = await axios.get('https://gist.githubusercontent.com/graffixnyc/8c363d85e61863ac044097c0d199dbcc/raw/7d79752a9342ac97e4953bce23db0388a39642bf/stocks.json', {
      httpsAgent: httpsAgent
    })
    return data
}

async function abc(){
    let a = await getStocks()
    console.log(a)
}

abc()
  1. 升级Node.js版本到16.x及以上的LTS版本,旧版本Node.js默认TLS支持版本较低,新版本默认适配TLS 1.2/1.3协议,无需额外配置即可兼容绝大多数站点的SSL要求
  2. 排查网络环境:切换为手机热点等其他网络重试请求,如果切换后请求正常,说明当前网络存在代理或劫持,可联系网络管理员确认SSL相关配置规则

内容的提问来源于stack exchange,提问作者Swayam Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:06:03