如何获取Azure PostgreSQL测试URL并解决Postman连接报错问题
Azure PostgreSQL + Node.js 接口问题解决方案
一、解决"Error: socket hang up"错误
这个错误的常见触发点和修复方式:
- Node.js服务未启动或未监听端口:检查路由代码末尾是否有启动服务的逻辑,示例:
未启动服务的话,Postman根本无法连接后端,必然报错。const port = process.env.PORT || 3001; app.listen(port, () => { console.log(`Server running on port ${port}`); }); - Azure PostgreSQL防火墙未放行访问:登录Azure Portal,找到你的PostgreSQL服务器,进入「连接安全」页面:
- 添加你的本地公网IP地址(测试用);
- 开启「允许Azure服务和资源访问此服务器」开关;
- 确认「拒绝公共网络访问」设置为「否」(测试环境)。
- 接口路由未正确响应请求:如果接口代码里没有用
res.send()/res.json()返回数据,请求会超时导致socket hang up。正确路由示例:app.get('/api/get-data', (req, res) => { pool.query('SELECT * FROM your_table', (err, result) => { if (err) { return res.status(500).send('查询失败'); } res.json(result.rows); }); }); - 数据库连接隐式错误:给
pool.connect加上完整错误捕获,避免连接失败直接崩溃服务:pool.connect(function (err) { if (err) { console.error('数据库连接失败:', err.stack); return; } console.log('Connected!'); });
二、Postman测试用的URL规则
- 本地开发环境:URL格式为
http://localhost:你的服务端口/接口路径。比如服务跑在3001端口,接口是/api/get-data,测试URL就是http://localhost:3001/api/get-data。 - Azure部署环境:如果Node.js服务部署在Azure App Service,URL就是你的App Service域名+接口路径,比如
https://your-app-name.azurewebsites.net/api/get-data。
三、React应用获取数据的URL配置
- 本地开发跨域场景:直接使用本地服务的完整URL,示例:
同时需要在Node.js服务中处理跨域,安装并启用fetch('http://localhost:3001/api/get-data') .then(res => res.json()) .then(data => console.log(data));cors:npm install corsconst cors = require('cors'); app.use(cors()); - 生产环境:
- 如果React和Node.js部署在同一域名下(比如React静态文件放在App Service的
wwwroot,后端路由同域名),可以用相对路径:fetch('/api/get-data'); - 如果分开部署,直接使用Node.js服务的完整域名URL即可。
- 如果React和Node.js部署在同一域名下(比如React静态文件放在App Service的
内容的提问来源于stack exchange,提问作者Haochen Dong
相关产品推荐
相关产品推荐

