首页 > 解决方案 > 部署通过 expressjs 提供的反应应用程序时出现内部服务器错误 403

问题描述

我正在尝试使用 expressjs 为构建反应应用程序提供服务。构建反应应用程序,并使用我的 expressjs 提供 index.html:

app.use('/', express.static('reactapp/build'))

该应用程序很简单。它包含许多卡片,当按下它们时会导航到改变路线的另一个页面。在点击之前,假设是 localhost:3000/lists,点击任何卡片后,它会路由到 localhosts/lists/1,其中 1 是一个 id。现在,当我在按下任何一张卡片后尝试刷新页面时,我得到“找不到路径的处理程序”(因为我想它是客户端 url,而不是由 express 处理)。最后一个 app.use 被触发。

app.use((req, res) => {
            res.status(404).json({message: `No handler for ${req.url}`, requestHost: req.baseUrl})
        })

因此,我所做的是,我在这个中间件部分中发送了 index.html 来解决我的问题。

app.use((req, res) => {
                res.sendFile(path.join(__dirname,"..\\reactapp\\build","index.html"));
            })

它在本地解决了问题,但在部署后我得到“状态代码 403 的内部服务器错误”。我不知道问题是什么。根据一个站点: 403(禁止)状态码表示服务器理解请求但拒绝授权......如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。

有人可以帮我吗?我对 expressjs 不太熟悉,所以我想了解可能的原因。

标签: javascriptreactjsexpresshttp-status-code-403

解决方案


res.sendFile(path.join(__dirname,"..\reactapp\build","index.html")); 设置路径的方式,不适用于 linux 机器。这可能是原因。


推荐阅读