ReactJS Router正在覆盖ExpressJS路由器

时间:2017-07-12 05:41:45

标签: javascript node.js reactjs express react-router

我遇到了非常有趣的问题。我的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,这使它看起来像是重写路径。

1 个答案:

答案 0 :(得分:1)

我找到了有趣的解决方案。当我通过POSTMAN发出api / hello请求时,它向我显示了JSON响应。

这意味着ReactJS在浏览器级别拥有自己的CACHING,这使它看起来像是重写路径。