问题描述
我正在使用connect-history-api-fallback
处理对React SPA中的React Router处理的route(“ pages”)的调用。它工作得很好,除了以斜杠输入的任何React Router“页面”都会失败。
https://my.app/signup
-有效。
https://my.app/signup/
-失败。
通常,Express会处理尾部斜杠,并只提供不带斜杠的网址(因此,您输入https://my.app/signup/
,Express给您https://my.app/signup
)。这是其他路由未在同一应用程序中使用历史连接中间件的行为,也是我在这里想要的行为。
我唯一想到的就是传递重写以处理斜杠:
import history from 'connect-api-history-fallback';
// ...setup
app.use(
history({
rewrites: [
{from: /\/signup\//,to:'/signup'}
]
}),express.static(path.join(dirname,'some/directory'))
);
但是,这失败了。
它甚至都无法进入我的React应用程序(不同于仅调用不存在的路由,例如https://my.app/fakeroute
,该路由不会加载任何内容),因此这不是问题React中的路线。
有人知道这样做的正确方法吗?作为一个流行的模块,我无法想象它不能处理斜杠。
解决方法
请确保您正在运行最新版本的connect-history-api-fallback
。我刚刚对其进行了测试,并且可以与/signup
和/signup/
const express = require('express');
const history = require('connect-history-api-fallback');
const app = express();
app.use(
history({
rewrites: [
{ from: /\/signup/,to: '/signup'}
]
})
)
app.get('/signup',function(req,res) {
res.send("signup");
})
app.listen(8080);