node.js - 无法读取未定义的属性“错误”。有什么问题?

标签 node.js reactjs rest api

我的REST API的原因是:{"error":"Auth failed. User does not exist"}
我尝试在React中使用setState将此错误保存到我的状态,但是我遇到了以下错误:无法读取未定义的属性“错误”。有什么问题?

export const login = user =>
  axios
    .post('http://localhost:3000/api/users/login', {
      login: user.login,
      password: user.password,
    })
    .then(res => {
      localStorage.setItem('userToken', res.data.token);
      return res.data.token;
    })
    .catch(err => {
      console.log(err);
    });


React.js中的功能:

  onSubmit(e) {
    e.preventDefault();

    const user = {
      login: this.state.login,
      password: this.state.password,
    };

    login(user).then(res => {
      if (!res.error) { // <- this error: TypeError: Cannot read property 'error' of undefined
        this.props.history.push(`/dashboard`);
      } else {
        this.setState({ error: res.error });
      }
    });
  }


这是我的后端代码:

    // Login Action
...
              return res.status(200).json({
                message: 'Auth successful',
                token,
              });
            }
            res
              .status(400)
              .json({ error: 'Auth failed. The password is incorrect.' });
          } else {
            res.status(400).json({ error: 'Auth failed. User does not exist' });
          }
        })
        .catch(err => {
          res.status(400).json({ error: err });
        });
    };

最佳答案

尝试这个:

login(user).then(() => this.props.history.push(`/dashboard`))
.catch(error=>this.setState({ error })


但是也许还有另一个问题,您通常不能为了陈述不变性而努力陈述自己的方式。我想您知道,但我发帖以防万一:

this.setState({ history: [...this.state.history, `/dashboard`] })

关于node.js - 无法读取未定义的属性“错误”。有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805403/

相关文章:

javascript node.js 从 mongoose mongodb pre hook 获取消息/变量到express.js 中的 post hook

html - React 和 flexbox 谁能看看这个问题? flex in flex 报错

javascript - 如何根据角色动态显示菜单选项

javascript - 如何在 Node js 中返回对 REST api 的响应

java - 使用 RESTful 下载文件会出现 HTTP 406 不适用错误

javascript - app.get ('env' )在本地主机和生产中的使用

javascript - 基本 meteor 异步概念 : Submit an Email and Send Email

rest - 如何使用stubby4j stub 某些请求并为其他请求调用真实服务

javascript - Node Js 内部线程池究竟是如何工作的?

reactjs - 除非在 '--jsx' 为 "jsx"时提供了 "react-jsx"标志,否则无法使用 JSX