我正在尝试在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有关,所以对于遇到与我相同问题的人来说。
答案 0 :(得分:0)
无论如何,您可以将代码段简化为:
fetch('http://localhost:4000/api/authenticate', config)
.then(response => response.json())
.then(({ user, response }) => {
您应该添加catch方法来处理Error对象。
答案 1 :(得分:0)
我删除时解决了同样的问题
mode: 'no-cors'
来自配置。