Redux-Saga报错TypeError: 无法读取undefined的'data'属性如何解决?
问题修复方案
1. 报错 TypeError: Cannot read properties of undefined (reading 'data') 修复
问题原因
你定义的 loadUsersApi 异步函数只执行了axios请求,没有返回请求结果,导致saga中通过call(loadUsersApi)拿到的response为undefined,后续访问response.data自然触发空指针报错。
修复代码(usersApi.js)
import axios from "axios"; export const loadUsersApi = async () => { // 新增return返回axios请求的完整结果 return await axios.get("http://localhost:5000/users"); };
2. redux-logger 不打印action修复
问题原因
store.js中的环境变量判断字段写错,标准的Node环境变量是process.env.NODE_ENV,你写的process.env_NODE_ENV是不存在的字段,判断永远返回false,logger不会被加入中间件队列,自然不会打印日志。
修复代码(store.js)
// 把错误的 process.env_NODE_ENV 改为 process.env.NODE_ENV if (process.env.NODE_ENV === "development") { middleware.push(logger); }
可选优化:错误捕获兼容性处理
当前catch块直接访问error.response.data,如果出现请求超时、跨域、后端服务未启动等场景,axios返回的error对象不存在response属性,会再次触发空指针报错,建议增加兼容判断:
// userSagas.js 的catch块修改 catch (error) { const errMsg = error.response?.data || error.message || '请求失败,未知错误'; yield put(loadUsersError(errMsg)); }
内容的提问来源于stack exchange,提问作者user15088424
相关产品推荐
相关产品推荐

