Javascript req.query为空,且req.url未使用react路由器和express完成
当页面URL为http://localhost:3000/verify?token=something 我使用fetch发出一个GET请求,当我点击服务器时,req.url是“/verify”,而不是“verify?token=something”,req.query对象也是空的 客户端在端口3000上运行,服务器在端口5000上运行。我在客户端使用package.json中的代理 我已经挠头有一段时间了,现在还不能弄明白这一点,所以任何帮助都将不胜感激 客户端代码: App.jsJavascript req.query为空,且req.url未使用react路由器和express完成,javascript,reactjs,express,react-router,react-router-dom,Javascript,Reactjs,Express,React Router,React Router Dom,当页面URL为http://localhost:3000/verify?token=something 我使用fetch发出一个GET请求,当我点击服务器时,req.url是“/verify”,而不是“verify?token=something”,req.query对象也是空的 客户端在端口3000上运行,服务器在端口5000上运行。我在客户端使用package.json中的代理 我已经挠头有一段时间了,现在还不能弄明白这一点,所以任何帮助都将不胜感激 客户端代码: App.js import
import {BrowserRouter as Router, Route} from "react-router-dom";
function App() {
return (
<Router>
<Navbar/>
<Route exact path="/" component={Home}/>
<UnPrivateRoute path="/verify" component={Verify}/>
</Router>
);
}
export default App;
服务器代码:
User.js
userRouter.get("/verify", (req, res) => {
console.log(req.url);
console.log(req.query);
});
之所以发生这种情况,是因为服务器的请求url不包含任何查询参数。请按如下方式更改在fetch方法中写入的url:
AuthService.verify(something).then(data =>{
const {message} = data;
setMessage(message);
});
Auth.js
export default {
verify: (something) => { //where something is the value of token
return fetch('/user/verify?token='+something)
.then(res => res.json())
.then(data => data);
}
}
还可以将某个对象的值传递到您这样称呼它的位置:
AuthService.verify(something).then(data =>{
const {message} = data;
setMessage(message);
});
你能分享你的包.json中的
react-router-dom
版本吗?这是“react-router-dom”版本“^5.2.0”是的,我知道了。出于某种原因,我不认为URL不会传递到服务器,因为服务器和客户端在不同的端口/服务器上运行
AuthService.verify(something).then(data =>{
const {message} = data;
setMessage(message);
});