read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:209:20) { errno: -4077(代码片段
Posted twinkle||cll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:209:20) { errno: -4077(代码片段相关的知识,希望对你有一定的参考价值。
本人在使用
node + koa
来实现gitup
的授权登录,但是在第二步获取access_token
的时候报下面的错误了。关于gitup如何授权登录,有兴趣的同学可以百度一下,获取访问官网的api地址 https://docs.github.com/cn/developers/apps/building-oauth-apps/authorizing-oauth-apps#%E5%93%8D%E5%BA%94,这里面讲的很详细,本人就不在赘述了,要说的是在获取access_token
时候遇到的问题,在这里看看能不能帮到有缘人。
问题复现
报的是这个错误,啥意思,从错误的名称来看,是连接重置了,但是连接为啥会重置呢?
gitup问题
gitup 在国内有一个问题——打不开,然后此时,好多博客或者文章就会让你去使用 科学上网的工具,科学上网的工具呢,本身是走的是一个代理,通过代理来实现gitup可以访问。关于科学上网的工具请自行搜索。
第二步获取access_token
获取第二步的代码很简单,如下:
async gitUpCallBack(ctx: Application.ParameterizedContext) {
// 获取之前的code
const { code } = ctx.request.query as ILoginGitUpCallbackParams;
// 获取到code后,请求gitup服务获取access_token
try {
const accessToken = await axios({
method: 'post',
url: 'https://github.com/login/oauth/access_token?client_id=client_id&client_secret=client_secret&code=' + code,
headers: {
'User-Agent': 'blog web'
}
})
console.log(accessToken, '-----accessToken');
} catch (err) {
console.log(err, '-----err');
}
ctx.body = '获取成功!'
}
上面的代码是一个koa的中间件,然后使用
axios
来发送http请求。
错误排查
对于出现错误,我们最主要的是进行错误排查,我一开定位的是
axios
是不是不能发送post请求
,然后我使用原生的 http服务来发送,也是报相同错误的。
使用postman
进行测试
对于同样的参数,我们使用postman进行测试,发现是好的,能够获取预期的结果(access_token)如下:
然后使用
postman
获取node端的源码,发现和我们的是一样的,我们的代码是没有问题的。
百度寻找结果
我发现好多错误都类似,并且听到了 proxy
这个词,那我就想到我本身也是有代理的,postman
可以请求成功是没有走代理的,所以最后关闭代理进行测试。(下面抽取两个简单的截屏)
关掉科学上网后会发现,我们的gitup已经打不开了,这里提供一个暂时的解决办法,修改hosts配置文件如下
进入gitup
我测试的时候是这么做的,
- 找一个
ping gitup.com
延迟比较低的ip,寻找的方法是,输入网址:http://ping.chinaz.com/github.com
- 打开
C:\\Windows\\System32\\drivers\\etc
目录下面,找到我们的hosts
文件,然后进行修改
保存后,就可以打开gitup了,但是有一个缺陷,短暂时间可以用,但是长时间不行,需要频繁的进行修改,目前我还没有办法怎么长时间的访问gitup不挂,除了科学上网外
测试结果
获取成功,大功告成!
以上是关于read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:209:20) { errno: -4077(代码片段的主要内容,如果未能解决你的问题,请参考以下文章
完美解决蚁剑{“code“:“econnreset“,“errno“:“econnreset“,“syscall“:“read“}
socket error:Error:read ECONNRESET.怎么回事
Nodejs 套接字报错处理 Error: read ECONNRESET
socket error:Error:read ECONNRESET.怎么回事