API resolved without sending a response

nextjs运行请求接口经常出现警告API resolved without sending a response

// const mysql = require('mysql');
const mysql = require('mysql2/promise')
const HOST = '127.0.0.1',
PORT = '3306',
DATABASE = 'user',
USERNAME = 'root',
PASSWORD = 'welcome123'

// 创建数据库连接
const connection = mysql.createConnection({
  host: HOST,
  user: USERNAME,
  port: PORT,
  password: PASSWORD,
  database: DATABASE
});


// 定义用户数据表模型
const Main = {
  id: {
    type: 'INT',
    allowNull: false,
    primaryKey: true,
    autoIncrement: true
  },
  ProjectName: {
    type: 'VARCHAR(100)',
    allowNull: false
  },
  clientName: {
    type: 'VARCHAR(100)',
    allowNull: false
  },
  price: {
    type: 'VARCHAR(100)',
    allowNull: false
  },
  publish_time: {
    type: 'VARCHAR(100)',
    allowNull: false
  },
  projectContent:{
    type: 'VARCHAR(100)',
    allowNull: false
  },
  projectAttion:{
    type: 'VARCHAR(100)',
    allowNull: false
  },
  worktime:{
    type: 'INT',
    allowNull: false
  },
  address:{
    type: 'VARCHAR(100)',
    allowNull: false
  },
  clientId:{
    type: 'INT',
    allowNull: false
  },
  mandataryId:{
    type: 'INT',
    allowNull: false
  },
  progress:{
    type: 'INT',
    allowNull: false
  },
  contact:{
    type: 'VARCHAR(100)',
    allowNull: false
  },
  mandataryName:{
    type: 'VARCHAR(100)',
    allowNull: false
  },
};
export const searchList = async(params: object) => {
  const conn = await connection;
  const { page, pageSize } = params;
  const offset = (page - 1) * pageSize;
  const countQuery = `SELECT COUNT(*) as total FROM mlist`;
  const [countResult] = await conn.execute(countQuery);
  const totalItems = countResult[0].total;
  const sql = `SELECT * FROM mlist LIMIT ${pageSize} OFFSET ${offset}`;
  const [results] = await conn.execute(sql);
  const totalPages = Math.ceil(totalItems / pageSize);
  return {
    data: results,
    page: page,
    totalPages: totalPages
  };
}
const { searchList } = require('../models');

export const resolvers = async (req,res) => {
  return new Promise((resolve, reject) => {
    searchList(req.query).then(response => {
      // 处理成功
      res.statusCode = 200
      res.setHeader('Content-Type', 'application/json');
      res.setHeader('Cache-Control', 'max-age=180000');
      res.json({
        code:0,
        data:response,
        msg:'success'
      })
      resolve(response);
    })
    .catch(error => {
      // 处理错误
      res.statusCode = 500
      res.setHeader('Content-Type', 'application/json');
      res.setHeader('Cache-Control', 'max-age=180000');
      res.json({
        code:500,
        data:error,
        msg:'error'
      })
      reject(error);
    });
  })
}

```javascript
import type { NextApiRequest,NextApiResponse } from "next";
import { resolvers } from "./resolvers";

export default function detail(
  req:NextApiRequest,
  res:NextApiResponse
){ 
  switch (req.query.id) {
    case 'list':
      resolvers(req,res).then(result => {
        // 处理查询结果
        return result;
      })
      .catch(error => {
        // 处理错误
        return error
      });
      break;
  
    default:
      break;
  }
}



![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/930833851496192.png "#left")
百度说是使用promise或者try的方式都是同样的警告,页面没有任何报错

【以下回答由 GPT 生成】

问题分析:
问题出现在Next.js运行请求接口时,经常出现警告"API resolved without sending a response",这个警告是表示接口没有返回响应结果。原因可能是接口代码有问题或者数据库查询出现错误。

解决方案:
1. 确保数据库连接正常:
首先,确认数据库连接信息是否正确。检查HOST、PORT、USERNAME、PASSWORD和DATABASE等参数是否正确配置。

2. 确保数据库查询语句正确:
查询语句可能存在错误,导致没有正确查询到数据或查询语句没有执行成功。可以使用console.log打印查询语句,查看是否正确。可以使用try-catch捕获错误,并打印错误信息。

3. 确保接口返回响应结果:
在接口代码中,需要通过res.send()或res.json()等方法返回响应结果。确认接口代码中是否正确返回了响应结果。

以下是给出的解决方案的代码示例:

```js
// 对接口进行修改
export const searchList = async (params: object, res: object) => {
  try {
    const conn = await connection;
    const { page, pageSize } = params;
    const result = await conn.query(`SELECT * FROM user LIMIT ${(page-1)*pageSize}, ${pageSize}`);
    res.json(result);
  } catch (error) {
    console.log(error);
    res.send(error);
  }
};

需要注意的是,以上只是一个解决方案的示例,具体的问题还需要根据实际情况进行分析和调试。如果有更详细的错误信息,可以提供给我,我可以给出更具体的解决方案。 ```


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^