EC2部署的Express服务可正常访问但React前端请求报404如何解决
问题解决方法
- 首要排查端口不匹配问题:你提供的Express服务代码中监听端口为
3001,但你标注的EC2服务访问地址端口为3000,二者不一致是最可能的原因- 本地运行时你前端请求的是
3001端口的本地服务,因此运行正常;部署到EC2后你前端仍请求3000端口,自然无法匹配到运行在3001端口的服务,返回404 - 修复方式:二选一即可
- 修改服务代码中监听端口为
3000,即把app.listen(3001, ...)改为app.listen(3000, ...),重新部署到EC2 - 修改前端请求地址的端口为
3001,同时确认EC2实例的安全组已经开放3001端口的公网入站规则
- 修改服务代码中监听端口为
- 本地运行时你前端请求的是
- 其他常规排查点:
- 登录EC2实例执行
netstat -tunlp | grep node,确认Node服务实际监听的端口和你预期一致 - 确认前端请求的路径和服务注册的路由完全匹配,当前服务仅注册了
GET /路由,若前端请求/api/xxx等其他路径会直接返回404 - 确认部署到EC2的代码为最新版本,避免本地修改后未同步到服务器导致的路由/端口差异
- 可在服务所有路由注册完成后添加全局404捕获中间件,方便定位错误:
- 登录EC2实例执行
app.use('*', (req, res) => { res.status(404).send(`路由不存在:${req.method} ${req.originalUrl}`) })
内容的提问来源于stack exchange,提问作者swarup beria
相关产品推荐
相关产品推荐

