javascript - 部署通过 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 不太熟悉,所以我想了解可能的原因。
解决方案
res.sendFile(path.join(__dirname,"..\reactapp\build","index.html")); 设置路径的方式,不适用于 linux 机器。这可能是原因。
推荐阅读
- sql - 如何在(Oracle SQL)中只允许数字
- python - 当 y_min = 0 时,二维平面中的有效联合和交叉点
- node.js - 节点js的Heroku部署
- c - 将单个字符指针传递给C中的函数
- php - Search.php 无法在找到项目时显示空白页面
- python - 在重定向页面上显示上次上传的文件详细信息 - Django
- speech-recognition - 如何从 microsoft-cognitive 中的单个音频文件中识别多个扬声器
- firebase - Flutter Profile Matching App - Cloud Firestore 数据建模 | 如何查询以避免对已经刷过的 UID 进行不必要的读取
- python - QWidget 在布局分配时变得不可见
- javascript - 根据js确认执行按钮onclick动作