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

NestJS路由已映射,React前端调用本地后端却出现404错误

React调用NestJS后端404问题排查

本地搭建的NestJS后端已完成路由映射(截图显示存在POST /auth/register和POST /auth/login路由),使用Insomnia发起API调用可正常访问,但React应用调用时返回404错误(截图显示请求URL为http://localhost:3000/api/auth/register,状态码404)。以下是排查及解决方法:

1. 修正请求URL与后端路由的匹配问题

从截图可见,React请求路径多了/api前缀,但NestJS实际映射的路由是/auth/register,二者不匹配导致404。有两种解决方式:

  • 方式一:修改React请求地址,去掉/api前缀,直接请求/auth/register
  • 方式二:在NestJS中添加全局路由前缀,让后端接口统一带上/api:
// main.ts
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setGlobalPrefix('api'); // 全局添加/api前缀
  await app.listen(3000);
}
bootstrap();

2. 配置React代理处理跨域与路径

如果React运行在不同端口(如默认的5173),直接请求后端地址会触发浏览器跨域限制,且容易写错路径。在React项目的package.json中添加代理配置:

"proxy": "http://localhost:3000"

配置后,React中可直接用/auth/register发起请求,会自动转发到NestJS后端。

3. 开启NestJS的CORS支持

浏览器会拦截跨域请求,Insomnia不受此限制,但React在浏览器环境下会触发CORS校验,可能表现为404(实际为CORS错误,可在浏览器控制台Console标签查看具体提示)。在NestJS的main.ts中开启CORS:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.enableCors(); // 开发环境允许所有来源,生产环境建议配置具体允许的域名
  await app.listen(3000);
}
bootstrap();

4. 确认请求方法是否匹配

检查React中的请求方法是否为POST,若误写为GET,会因后端无对应GET路由返回404。示例Axios请求:

// 正确的POST请求示例
axios.post('/auth/register', { /* 请求体数据 */ })
  .then(response => console.log(response))
  .catch(error => console.error(error));

5. 核对后端运行端口

确保React请求的端口与NestJS实际运行的端口一致,比如NestJS监听3000端口,React请求就不能指向3001端口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:22:10