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

Koa2 & Nodejs接口返回JSON时出现404(Not Found)错误求解

排查Koa2接口返回404错误的解决方案

咱们一步步来定位和解决你遇到的问题:

1. 先确认路由是否正确挂载到Koa应用

这是404错误最常见的原因之一——你的/reqwords路由可能根本没被Koa识别到。

你需要确保:

  • 已经创建了Koa Router实例,并且把这个POST路由添加到Router上
  • 最后通过app.use(router.routes())和app.use(router.allowedMethods())将路由挂载到Koa应用中

举个正确的挂载示例:

const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();

// 你的POST路由要放在Router实例上
router.post('/reqwords', async (ctx) => {
  // 你的业务逻辑代码
});

// 必须挂载路由到Koa应用
app.use(router.routes());
// 处理OPTIONS请求、HTTP方法不匹配等场景(可选但推荐)
app.use(router.allowedMethods());

app.listen(3000, () => {
  console.log('Koa app running on http://localhost:3000');
});

如果跳过了挂载步骤,Koa找不到对应的路径,自然会返回404。

2. 修复异步处理逻辑的问题

你的代码里在async中间件中使用了.then(),但没有等待这个异步操作完成——Koa会在async函数执行完(还没走到.then里的代码)就结束请求,此时ctx.body还没被设置,Koa会默认返回404(因为没有合法的响应内容)。

正确的做法是用await替代.then(),配合try/catch捕获错误,确保异步操作完成后再设置响应:

router.post('/reqwords', async (ctx) => {
  try {
    let goroClient = new GOROClient();
    // 用await等待send方法的异步结果
    const res = await goroClient.send({ /* 你的参数 */ });
    const { Code } = res;
    
    if (Code === 'OK') {
      console.log(res);
      ctx.body = res;
    } else {
      // 处理Code非OK的情况,建议设置合适的HTTP状态码
      ctx.status = 400;
      ctx.body = res;
    }
  } catch (err) {
    console.log(err);
    // 服务器错误返回500状态码
    ctx.status = 500;
    ctx.body = err;
  }
});

3. 验证请求的路径和方法是否匹配

  • 检查前端请求的路径是否是/reqwords,有没有拼写错误(比如大小写、多余的斜杠)
  • 确认请求方法是POST,而不是GET/PUT等其他方法
  • 可以在路由开头加一行日志,验证是否进入了这个路由:
    router.post('/reqwords', async (ctx) => {
      console.log('已进入/reqwords路由'); // 查看控制台是否输出这条日志
      // 后续业务逻辑
    });
    
    如果控制台没输出,说明路由没匹配到,回到第一步检查挂载。

4. 确认端口匹配

确保前端请求的端口和Koa应用监听的端口一致(比如Koa监听3000,前端要请求http://localhost:3000/reqwords,而不是其他端口)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:58:15