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

标签 express react-router single-page-application

我正在使用 connect-history-api-fallback 来处理对 React SPA 中由 React Router 处理的路由(“页面”)的调用。它工作得很好,除了任何以尾部斜杠输入的 React Router“页面”都会失败。

https://my.app/signup - 有效。 https://my.app/signup/ - 失败。

通常情况下,Express 会处理尾部的斜线并只提供没有它的 url(因此,您输入 https://my.app/signup/,Express 会为您提供 https://my.app/signup)。这是在同一个应用程序中不使用 history-connect 中间件的其他路由的行为,也是我在这里想要的行为。

我唯一能想到的就是通过重写来处理结尾的斜线:

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);

关于express - 处理 connect-history-api-fallback 和 Express 中的尾部斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64336691/

相关文章:

mysql - 找到总和最小的索引

reactjs - 如何在 React 中使用 JWT token 实现私有(private)路由

Azure Http 到 Https 重定向不适用于 SPA

reactjs - Firebase 托管上的单页应用程序上的深层路由出现问题

asp.net - 使用 Breezejs 捕获 SaveChanges() 上的外键异常

javascript - NextJS : dynamic router. 路径名不显示路径,但文件名 - 如何获取路径中的单词?

javascript - next() 不会跳过中间件的其余部分

node.js - 提供多种内容类型

node.js - sendfile 有问题

reactjs - 带有状态的链接不会传递到路由页面