【解决办法】 json-server login 404 的问题
来源:5-1 用React表单、TS的类型继承和鸭子类型实现登录表单
辰辰ollie
2021-07-13
【解决办法】增加了middlewares后启动json-server,LoginScreen.tsx里请求/login 输入用户名密码依旧404的问题。这里我也碰到了,看了视频敲了一遍,感觉代码都写对了,最后还是404.
这里有几个解决办法:
1 清楚浏览器缓存
2 更换json-server 的端口(比如原来用3001 现在改成3002试试)
我就是改了个端口然后重启就好了,不知道为啥。
另外代码我都贴出来,我看卡在这里的人挺多的!希望对大家有帮助!
//LoginScreen.tsx
import { FC, FormEvent, ReactElement } from 'react';
interface IProps {}
interface Iparams {
username: string;
password: string;
}
const apiUrl = process.env.REACT_APP_API_URL;
export const LoginScreen: FC<IProps> = (): ReactElement => {
const loginMethod = (params: Iparams) => {
fetch(`${apiUrl}/login`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(params),
}).then(async (res) => {
if (res.ok) {
let data = await res.json();
console.log(data);
}
});
};
const handleSubmit = (event: FormEvent<HTMLFormElement>) => {
event.preventDefault();
const username = (event.currentTarget.elements[0] as HTMLInputElement)
.value;
const password = (event.currentTarget.elements[1] as HTMLInputElement)
.value;
loginMethod({ username, password });
};
return (
<>
<div style={{ width: '800px', margin: '0 auto' }}>
<form onSubmit={handleSubmit}>
<div>
<label htmlFor={'username'}>用户名</label>
<input type="text" id={'username'} />
</div>
<div>
<label htmlFor={'password'}>密码</label>
<input type="password" id={'password'} />
</div>
<button type={'submit'}>登录</button>
</form>
</div>
</>
);
};
module.exports = (req, res, next) => {
console.log(req.body); //如果404了,输出检查看看控制台里输出什么
if (req.method === 'POST' && req.path === '/login') {
if (req.body.username === 'ollie' && req.body.password === '123') {
console.log(req.body.username);
console.log(req.body.password);
return res.status(200).json({
user: {
token: '123',
},
});
} else {
return res.status(400).json({
messages: '用户名或密码错误',
});
}
}
next();
};
另外这个课程做的确实很棒,学到了不少东西!
9回答
-
非常赞👍
022021-07-15 -
Bruce_Kim
2022-04-17
我是重新启动一下 json-server 就好了
10 -
慕慕大人的头号粉丝
2024-02-12
补充一下npm run json-serever 404的问题 ,如果上面方法不行的话。就把json-serever的版本降到0.16.2,也可以解决版本高了不兼容middlewares的问题
00 -
慕先生4415574
2023-08-25
感谢,确实重新启动一下json-server就好了
00 -
TMOA
2022-02-17
我是去掉./__json_server_mock__/middleware.js前面的./才成功的
--middlewares __json_server_mock__/middleware.js
00 -
_知更鸟
2021-10-31
req.path === "/login" ,大家不要把斜杠写漏了,不然也会40400 -
请看文档
2021-10-12
感谢分享,我的是重启下项目好了
00 -
Dxxxxxxw
2021-08-13
大部分人可能是 else 写错地方了,譬如我
00 -
weixin_慕仰7304497
2021-08-05
复制了你的代码就好了 可能是哪里敲错了
00
相似问题