登录提交用户信息至数据库时遇Uncaught (in promise) TypeError错误求助
错误原因及修复方案
这个错误是因为当请求发生异常时(比如网络断连、服务器无响应),err.response可能是undefined,这时候直接访问err.response.data就会触发"Cannot read properties of undefined (reading 'data')"的报错。你的catch块里所有逻辑都直接依赖err.response.data,但完全没考虑err.response不存在的情况,这就是问题根源。
修复后的catch块代码:
.catch((err) => { // 先判断是否存在服务器返回的响应 if (err.response) { const errorData = err.response.data; if(errorData.errors?.[0] === 'invalid credentials'){ console.log('invalid credentials') } else { if(errorData.errors?.length > 0){ alert(errorData.errors[0]) } else { alert(errorData.message || '登录失败,请稍后重试') } } } else { // 处理网络错误或无响应的情况 alert('网络异常,请检查网络连接后重试') console.error('请求错误:', err.message) } })
额外优化建议:
- 用可选链操作符
?.(比如errorData.errors?.[0]),避免errors本身为undefined时触发新的报错 - 在then块里也可以加一层
res.data的存在性判断,进一步提升代码稳定性
内容的提问来源于stack exchange,提问作者Lanre Afeez
相关产品推荐
相关产品推荐

