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

Next.js API路由连接PostgreSQL失败无法获取数据求助

问题原因与修复方案

你这个接口返回500错误是几个常见问题叠加导致的,按下面顺序排查修改即可:

  • 模块导入路径错误
    你的数据库连接文件server.js存放在项目根目录,但在/src/pages/api/users.ts中写import pool from "server"时,Node会默认去node_modules目录下寻找名为server的第三方依赖包,根本不会加载你本地写的连接文件。改成对应相对路径即可:
// /src/pages/api/users.ts
// 从当前users.ts所在目录向上回溯3层到达项目根目录,再引入server模块
import pool from "../../../server";

如果改完导入报JS/TS模块兼容错误,打开根目录tsconfig.json,在compilerOptions中把allowJs设为true,允许TS文件导入CommonJS规范的JS模块。

  • SQL语句误用保留关键字
    PostgreSQL中user是内置保留关键字,直接执行SELECT * FROM user不会查询你自定义的用户表,而是调用内置user函数返回当前数据库连接的账号名。如果你的表确实命名为user,必须给表名加双引号转义;更推荐直接把表名改为非保留字的users,避免后续所有SQL都要额外转义:
// 表名为user的转义写法
const data =  await pool.query('SELECT * FROM "user"');
// 推荐改表名为users的写法
const data =  await pool.query('SELECT * FROM users');
  • 错误逻辑吞掉了真实报错信息
    你现在catch块直接返回固定错误文案,开发阶段根本看不到实际报错原因,先把错误打印逻辑加上,后续出问题能直接定位:
} catch (err) {
  // 开发环境在终端打印真实错误
  console.error('接口执行出错:', err);
  res.status(500).json({ error: 'failed to load data' })
}

另外注意你贴的curl详细日志里,实际发起请求的路径是/api/decks而不是/api/users,如果改完上述配置还是报错,先确认请求的URL和实际API路由路径完全匹配。
改完所有配置后重启next dev服务再测试接口即可。

内容的提问来源于stack exchange,提问作者F.Yuya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:51:25