javascript - React 路由器和 Express GET 冲突

标签 javascript node.js reactjs express react-router

我无法弄清楚 react 路由器和快速路由如何一起工作。

我有这个

app.get('*', function(req, res) {
    res.sendFile(path.resolve(__dirname) + '/server/static/index.html');
});

// routes
const apiRoutes = require('./server/routes/api');
app.use('/api', apiRoutes);

问题是我的 api 无法使用 GET,因为它会重定向到 index.html。如果我删除通配符路由,那么react-router将无法正常工作。

最佳答案

您的 app.get('*') 语句将匹配传入的任何请求。您可以通过更改语句的顺序来解决问题:

// routes
const apiRoutes = require('./server/routes/api');
app.use('/api', apiRoutes);

app.get('*', function(req, res) {
    res.sendFile(path.resolve(__dirname) + '/server/static/index.html');
});

这样,任何路径以 /api 开头的请求都将由您的 apiRoutes 路由器处理,所有其他请求均由星号处理。

关于javascript - React 路由器和 Express GET 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43557390/

相关文章:

javascript - 如果用户在移动设备上,如何更改样式表?

reactjs - React 中可以在 Component 里面写 Component 吗?

javascript - Web 应用程序中的 Node.js cron 作业

html - 使用 Hogan.js 进行部分处理

javascript - "$lookup with ' 管道 ' may not specify ' 本地字段 ' or ' 国外字段 '"

javascript - 按 Enter 键 react 组件

javascript - 学习者问题 : How to conditionally set wrapper for this particular code. React/SPFX

javascript - 限制对 JavaScript 变量的访问

javascript - 使用自定义原型(prototype)实例化 JavaScript 函数

asp.net - 访问单选按钮的 OnChange javascript 事件时出现问题