使用untis-api调用Untis-API时出现ECONNRESET错误的解决方法
解决untis-api调用时出现ECONNRESET错误的方案
我在使用untis-api包访问Untis API时,运行Node.js(v16.15.0)代码出现以下错误:
node:internal/process/promises:279 triggerUncaughtException(err, true /* fromPromise */); ^ Error: read ECONNRESET at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20) { errno: -4077, code: 'ECONNRESET', syscall: 'read' }
我的代码如下:
const w = require("untis-api"); const e = w.entities; w.connect("USERNAME", "PASSWORD", "SCHOOL", "URL").then(() => { w.getTeachers().then(teachers => { console.log(teachers); }).catch(err => { console.log(err); }); w.logOut(); }).catch(err => { console.log(err); });
解决方案
修正异步执行顺序(核心问题)
代码里w.getTeachers()是异步操作,但你在调用后立刻执行w.logOut(),导致请求还没完成就断开了连接,直接触发ECONNRESET错误。必须确保登出操作在请求完成后执行:const w = require("untis-api"); const e = w.entities; w.connect("USERNAME", "PASSWORD", "SCHOOL", "URL") .then(async () => { try { const teachers = await w.getTeachers(); console.log(teachers); } catch (err) { console.log(err); } finally { await w.logOut(); // 确保请求完成后再执行登出 } }) .catch(err => { console.log(err); });其他排查方向
- 检查
URL参数格式:Untis API地址通常为https://<学校Untis服务器域名>/WebUntis/jsonrpc.do,确认域名、路径是否正确。 - 排查网络环境:确认防火墙、代理没有拦截请求,可先在同一网络下访问Untis网页验证连通性。
- 更新依赖包:执行
npm update untis-api更新到最新版本,避免包本身的兼容性问题。
- 检查
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

