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

Node.js+Express实现POST请求报404错误,请问代码哪里有问题?

问题排查与修复

1. 页面报Cannot GET 404的核心原因

浏览器直接访问地址时默认发送GET请求,你当前服务端仅定义了/addMovie路径的POST路由,没有对应访问路径的GET路由,同时你配置的静态资源目录node需要满足以下要求:

  • 你的客户端HTML/JS文件必须放在项目根目录下的node文件夹内
  • 入口页面文件名必须为index.html,否则访问时需要带上完整文件名,比如http://localhost:8000/xxx.html

如果不想用静态资源中间件,也可以手动加根路径的GET路由返回页面:

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/你的页面路径.html')
})

2. 服务端POST路由缺失响应

当前addMovie处理函数仅处理了数据存储,没有给客户端返回响应,会导致客户端请求超时,修改如下:

function addMovie(req, res){
    data.push(req.body);
    console.log(data);
    // 新增返回响应
    res.json({
        code: 200,
        msg: '添加成功',
        data: req.body
    })
};

3. 客户端代码变量名错误

postData函数的参数名为大写URL,但fetch调用时用的是小写url,变量不匹配会抛出未定义错误,修改如下:

const postData = async(url = '', data= {})=>{ // 参数名统一为小写url
    console.log(data);
    const response = await fetch(url, {
        method: 'POST', // 请求方法按规范改为大写
        credentials: 'same-origin',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(data),
    });
    try{
        const newData = await response.json();
        console.log(newData);
        return newData
    }catch(error){
        console.log("error", error);
    }
}

postData('/addMovie', {movie: 'Dark Knight', score: 5});

内容的提问来源于stack exchange,提问作者H-Dahab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:15:03