Node.js连接PostgreSQL时遭遇JSON解析错误求助
错误排查:SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
这个错误的核心原因是:前端请求没有正确转发到Node.js后端,反而收到了前端的HTML页面(比如React的index.html),而非预期的JSON响应。以下是具体排查和修复步骤:
1. 先验证后端服务是否正常
先直接测试后端接口能否返回正确JSON:
- 启动Node.js后端服务器
- 在浏览器或Postman中访问
http://localhost:5000/api/TestConnection - 如果返回
{"message": "Connected to backend successfully!"},说明后端没问题;如果报错,优先修复后端服务。
2. 修正代理配置(关键)
你在package-lock.json配置代理是错误的位置,代理需要配置在**前端项目的package.json**中,或使用setupProxy.js(针对新版本Create React App):
方法一:package.json简单配置
在前端项目根目录的package.json末尾添加:
"proxy": "http://localhost:5000"
添加后重启前端开发服务器,确保代理生效。
方法二:setupProxy.js进阶配置(推荐)
如果你的Create React App版本是2.x及以上,在src目录下新建setupProxy.js文件,内容如下:
const { createProxyMiddleware } = require('http-proxy-middleware'); module.exports = function(app) { app.use( '/api', createProxyMiddleware({ target: 'http://localhost:5000', changeOrigin: true, }) ); };
完成后重启前端开发服务器。
3. 确保前后端服务同时运行
- 启动Node.js后端(端口5000)
- 启动React前端开发服务器(默认端口3000)
- 此时前端请求
/api/TestConnection会被代理到http://localhost:5000/api/TestConnection
4. 额外检查点
- 确认后端路由大小写:你的后端路由是
/api/TestConnection,前端请求路径一致,没问题;如果大小写不匹配会返回404 HTML错误页。 - 增强前端错误排查:在
fetch中先判断响应状态,更直观定位问题:fetch('/api/TestConnection') .then(response => { if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return response.json(); })
5. PostgreSQL连接的前置提示
当前错误和PostgreSQL无关,但提前注意:
- 确保PostgreSQL服务正在运行(端口5432)
- 确认数据库
GamingWorld已创建,users表存在 - 可以添加测试连接的代码:
pool.connect((err, client, release) => { if (err) { return console.error('Error acquiring client', err.stack); } console.log('Connected to PostgreSQL successfully!'); release(); });
内容的提问来源于stack exchange,提问作者Or ifrach
相关产品推荐
相关产品推荐

