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

Next.js API路由调用MySQL遇无响应错误:No response is returned from route handler

解决Next.js API路由返回"No response is returned from route handler"错误

你的问题出在异步逻辑的处理上:db.query使用了回调函数,这是异步执行的,但外层的GET函数没有返回任何有效值——回调里的return只属于回调函数本身,不会作为GET函数的返回结果。Next.js要求API路由处理器必须返回一个响应(或Promise),当GET函数执行完毕(此时回调还没触发),框架就会判定没有返回响应,抛出错误。

下面是两种可行的修复方案:

方案1:改用async/await(推荐)

如果你的数据库库支持Promise(比如mysql2/promise),可以直接用异步语法处理:

import { NextResponse } from "next/server";
import db from '../../../../lib/db';

export async function GET(request) {
  try {
    const [results] = await db.query('SELECT * FROM department');
    // 查询成功用200状态码更合适,201一般用于资源创建成功
    return NextResponse.json({ data: results }, { status: 200 });
  } catch (error) {
    console.error('Error querying the database:', error);
    return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 });
  }
}

方案2:封装回调为Promise

如果只能使用回调式API,手动把db.query封装成Promise,让GET函数返回这个Promise:

import { NextResponse } from "next/server";
import db from '../../../../lib/db';

export function GET(request) {
  return new Promise((resolve) => {
    db.query('SELECT * FROM department', (error, results, fields) => {
      if (error) {
        console.error('Error querying the database:', error);
        resolve(NextResponse.json({ error: 'Internal Server Error' }, { status: 500 }));
        return;
      }
      resolve(NextResponse.json({ data: results }, { status: 200 }));
    });
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:32:41