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

使用Express.js+Node.js时Fetch POST请求出现404 URL未找到问题

前端Fetch POST请求到Express后端报404 URL Not Found问题

我在使用Node.js和Express开发时,遇到前端通过Fetch发送POST请求无法找到对应URL的问题,报错为404 URL Not Found。我已经尝试了多种请求URL格式,但问题依然存在。

前端代码

const form = document.querySelector('form');

form.addEventListener('submit', async (e) => {
  e.preventDefault();

    const data = new FormData(form);

    const response = await fetch('http://localhost:8080/app', {
      method: 'POST',
      body: JSON.stringify({
        prompt: data.get('input'),
      }),
      headers: {
        'Content-Type': 'application/json',
      },
    })

});

后端Express代码

import express from 'express';
import cors from 'cors';

const app = express();
app.use(cors());
app.use(express.json());

app.post('/app', async (req, res) => {
  try {
    
    const response = 'test'

    res.send({ response });
  } catch (error) {
    console.error(error)
  }
});
app.listen(8080)

已尝试的请求URL格式

'http://localhost:8080/app'

'/app'

'./app'

'app'

'localhost:8080/app'

'http://localhost:8080'

排查与解决步骤

  • 确认后端服务正常启动
    在app.listen里加个回调函数,启动后看终端是否输出服务启动提示:

    app.listen(8080, () => {
      console.log('服务已启动在http://localhost:8080');
    });
    

    如果终端没这句话,说明服务没正常启动,检查启动命令和代码报错。

  • 检查端口占用情况
    Mac/Linux用lsof -i :8080,Windows用netstat -ano | findstr ":8080"查看8080端口是否被其他程序占用,换个未被占用的端口试试。

  • 直接验证后端路由
    用Postman或curl发送POST请求到http://localhost:8080/app,如果能收到{"response":"test"},说明后端路由没问题,问题出在前端;如果还是404,检查后端路由定义是否正确。

  • 前端请求路径与跨域检查

    • 若前端和后端同域,用相对路径'/app'更稳妥,避免全路径拼写错误。
    • 确认前端请求的端口是后端的8080,不是前端自身的服务端口(比如3000)。
  • 查看浏览器Network日志
    打开开发者工具的Network标签,检查请求的方法、URL、请求头(尤其是Content-Type)和请求体是否正确,有没有隐藏的错误提示(比如CORS问题)。

  • 确认中间件顺序
    确保app.use(express.json())放在路由定义之前,否则Express无法解析JSON请求体,虽然你的代码顺序正确,但后续修改时要注意这点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:42:36