我遇到了非常有趣的问题。我的React JS根文件有多个路由器:
render() {
return (
<div className="container body">
<Route exact path="/" component={<IndexPage/>} />
<Route exact path="/users" component={<Users/>} />
<Route exact path="/users/:userId" component={<User/> }/>
<Route exact path="/routers" component={<Routers/>} />
</div>
);
}
我根据路线生成组件。然后我通过webpack将我的反应组件构建为单个javascript文件。
现在我试图通过ExpressJS显示React页面,如下所示:
const express = require('express');
const app = express();
// This is location where generated Webpack files are located
app.use(express.static(__dirname + '/../build'));
app.get('/api/hello', (req, res) => {
res.json({hello: 'world'})
});
// This is how I render React based pages
app.get(['/', '/users', '/routers'], (req, res) => {
res.sendFile(__dirname + '/../build/index.html');
});
app.listen(9000);
当我通过浏览器打开/
,/users
,/routers
路径时,它会显示正确的React组件。
但是,当我尝试打开/api/hello
时,它仍在尝试生成不存在的React Component,而不是显示JSON响应!
如何停止使React的路由器覆盖Express&#39;路由器?
================= UPDATE ===================== < / p>
我找到了有趣的解决方案。当我通过 POSTMAN 提出api/hello
请求时,它向我显示了JSON响应。
这意味着ReactJS在浏览器级别拥有自己的CACHING,这使它看起来像是重写路径。
答案 0 :(得分:1)
我找到了有趣的解决方案。当我通过POSTMAN发出api / hello请求时,它向我显示了JSON响应。
这意味着ReactJS在浏览器级别拥有自己的CACHING,这使它看起来像是重写路径。