无法读取未定义的属性“状态”

时间:2019-07-07 11:34:11

标签: node.js reactjs redux

im试图将用户重定向到特定路由(如果他未登录并未经授权以更新用户)(401)并得到此“无法读取未定义的属性'status'状态”,而对于显示联系人确实可以正常工作。但是,对于更新用户来说并没有。 这是Action文件夹Index.js文件中Action函数的创建者。 还想提到新用户在db中更新就好了。 谢谢

export const updateUser = user => {
  return async dispatch => {
    try {
      const response = axios.patch(`${backend_URL}/users/me/edit`, user);
      const newUser = {
        ...JSON.parse(localStorage.getItem("user")),
        ...response.data.req.user
      };
      localStorage.setItem("user", JSON.stringify(newUser));
      dispatch({ type: "UPDATE_USER", payload: response.data.req.user });
      history.push("/users/me");
    } catch (err) {
      if (err.response.status === 401) {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.response.data.error, type: "danger" }
        });
        history.push("/users/login");
      } else {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.response.data.error, type: "danger" }
        });
      }
    }
  };
};

2 个答案:

答案 0 :(得分:0)

axios.patch返回承诺。因此需要处理。您可以使用await axios.patch来处理承诺。

答案 1 :(得分:0)

对象err没有称为response的属性。相反,您应该使用有效的属性,例如 name message

我没关系,您可以获取错误状态,因此请按名称获取。

export const updateUser = user => {
  return async dispatch => {
    try {
      const response = axios.patch(`${backend_URL}/users/me/edit`, user);
      const newUser = {
        ...JSON.parse(localStorage.getItem("user")),
        ...response.data.req.user
      };
      localStorage.setItem("user", JSON.stringify(newUser));
      dispatch({ type: "UPDATE_USER", payload: response.data.req.user });
      history.push("/users/me");
    } catch (err) {
      if (err.name === "ReferenceError") {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.message, type: "danger" }
        });
        history.push("/users/login");
      } else {
        dispatch({
          type: "SET_ALERT",
          payload: { msg: err.message, type: "danger" }
        });
      }
    }
  };
};

查看有关错误的文档:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error