获取POST意外的输入结束Erorr

时间:2016-06-20 13:59:49

标签: javascript api reactjs http-post redux

我正在尝试在Redux中进行身份验证的POST请求,并且我正在通过电子邮件&密码作为正文但它在控制台中返回此错误:

Uncaught (in promise) SyntaxError: Unexpected end of input

我环顾四周寻找答案,许多人认为它可能是一个缺失的}支架,但我找了它,我不认为这样。

这是我的获取功能。

export function loginUser(creds) {

  let config = {
    mode: 'no-cors',
    method: 'POST',
    headers: { 'Content-Type':'application/x-www-form-urlencoded' },
    body: `email=${creds.email}&password=${creds.password}`
  };


  return dispatch => {
    dispatch(requestLogin(creds));
    return fetch('http://localhost:4000/api/authenticate', config)
    .then(response =>
      response.json()
      .then(user => ({ user, response }))
    ).then(({ user, response }) =>  {
      if (!response.ok) {
        dispatch(loginError(user.message));
        return Promise.reject(user);
      } else {
        localStorage.setItem('id_token', user.token);
        dispatch(receiveLogin(user));
      }
    });
  };
}

fetch POST方法调用API,我在网络选项卡中看到它,我也看到了响应,但是在url和config之后,获取请求在.then(response =>处停止。

已经两天了,仍无法找到解决方案。顺便说一句,这在Postman(chrome扩展)中运行良好,因此API没有任何问题。

由于

回答编辑:这个问题与CORS有关,所以对于遇到与我相同问题的人来说。

2 个答案:

答案 0 :(得分:0)

无论如何,您可以将代码段简化为:

fetch('http://localhost:4000/api/authenticate', config)
  .then(response => response.json())
  .then(({ user, response }) =>  {

您应该添加catch方法来处理Error对象。

答案 1 :(得分:0)

我删除时解决了同样的问题

mode: 'no-cors'

来自配置。