You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MERN Stack项目请求http://localhost:5000 API偶发404错误求助

问题根因及修复方案

1. 前端请求URL缺失HTTP协议

你的axios请求写的是localhost:5000/movies/,缺少http://前缀,浏览器会默认将其识别为当前前端页面域名下的相对路径,比如前端运行在3000端口时,实际请求地址会变成http://localhost:3000/localhost:5000/movies/,直接触发404错误。
修复方法:修改请求代码为:

const getMovies = async() => { 
    await axios.get('http://localhost:5000/movies/')
            .then(res=>{ console.log(res.data); setMovies(res.data) }) 
            .catch(err=>console.log(err)) 
    console.log(movies) 
}

2. 端口占用导致服务偶发异常

你提到无代码改动时接口有时可用有时不可用,甚至其他历史正常项目也出现同样问题,大概率是5000端口被其他进程占用,要么导致你的Express服务没有正常启动成功,要么后台存在残留的旧Node进程监听5000端口,没有对应路由规则所以返回404。
排查修复步骤:

  • 关闭当前运行的所有Node服务:Windows系统执行taskkill /f /im node.exe,Mac/Linux执行killall node
  • 检查5000端口占用:Windows执行netstat -ano | findstr :5000,Mac/Linux执行lsof -i :5000,如果有其他进程占用,可以更换服务启动端口(比如改成5001),或者结束占用端口的进程
  • 特殊说明:MacOS Monterey及以上版本系统的AirPlay接收器默认占用5000端口,可以在系统设置-通用-AirDrop与Handoff中关闭AirPlay接收器释放端口。

3. 路由冗余优化(可选)

你将movieRouter挂载在/movies路径下,路由文件中又定义了/movies的GET接口,实际访问路径为/movies/movies,该接口目前没有被调用,属于冗余代码,可以根据业务需要保留或删除。

内容的提问来源于stack exchange,提问作者ricmiber96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:45:02