重启服务器后登录请求报Failed to fetch错误该如何排查解决?
问题排查方案
1. 优先修复后端接口无异常响应的问题
你当前的/api/user/get接口catch块仅打印错误日志,没有给前端返回响应,一旦代码逻辑抛出异常进入catch块,前端请求会因为无响应超时报Failed to fetch,这是你当前报错最直接的诱因。
请先修改后端接口的catch块:
catch(e) { console.log(e) // 新增错误响应返回 return res.send('{"error": {"isError": true, "message": "服务器内部错误:" + e.message}}') }
修改后复现问题,查看前端弹出的错误提示,即可定位具体触发的异常类型。
2. 重点排查session存储配置异常
你代码中使用了req.session存储登录态,如果你使用的是express-session默认的内存存储方案:
- 重启服务器后所有内存存储的session数据会全部清空
- 内存存储在并发访问、服务重启场景下极易出现访问异常,触发代码报错进入catch块
建议优先将session存储替换为redis、MongoDB等持久化存储方案,同时检查session配置的secret、cookie.domain、secure等参数是否固定,不会随服务重启发生变动。
3. 排查数据库连接异常
重启服务器后如果数据库连接未成功重连,执行userdb.findOne()等数据库操作时会直接抛出异常,进入未返回响应的catch块导致前端报错。你可以在重启服务后先查看后端控制台的初始化日志,确认数据库连接状态正常,也可以在catch块的打印日志中查看是否有数据库相关报错。
4. 前端代码优化(避免额外异常)
你当前用模板字符串拼接JSON请求体的方式存在风险,如果账号密码包含双引号、转义字符会破坏JSON格式导致请求参数异常,建议改为标准的JSON.stringify构造请求体:
// validation函数中替换原data构造逻辑 let data = JSON.stringify({ email: email, password: password })
内容的提问来源于stack exchange,提问作者DarkInk
相关产品推荐
相关产品推荐

