在connect-history-api-fallback和Express中处理尾部斜杠

问题描述

我正在使用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);