使用Node.js+Express访问Render PostgreSQL遇ENOTFOUND错误求助
解决Node.js/Express连接Render PostgreSQL时的getaddrinfo ENOTFOUND错误
错误日志
[nodemon] restarting due to changes... [nodemon] starting `node server.js index1.js` Server is running on port: 3000 Error got in API: Error: getaddrinfo ENOTFOUND dpg-ckdsqhtjhfbs73803ts0-a.oregon-postgres.render.com at C:\Users\user\OneDrive\Documents\ALL_RELATED_WITH_\testbackapi\todobackapi\node_modules\pg-pool\index.js:45:11 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async C:\Users\user\OneDrive\Documents\ALL_RELATED_WITH_\testbackapi\todobackapi\index1.js:46:20 { errno: -3008, code: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'dpg-ckdsqhtjhfbs73803ts0-a.oregon-postgres.render.com' }
解决方案
核对数据库主机名准确性
登录Render控制台,复制数据库实例的官方主机地址,和代码中的配置逐一比对,避免拼写错误。同时在本地终端执行ping dpg-ckdsqhtjhfbs73803ts0-a.oregon-postgres.render.com,如果显示无法解析,说明域名存在问题或网络无法访问该域名。检查Render数据库状态
确认Render上的PostgreSQL实例处于「运行中」状态,若实例被暂停或已删除,先恢复或重新创建实例再尝试连接。验证网络与防火墙设置
关闭本地防火墙、代理工具后重试连接;若处于公司网络,联系网管确认是否允许访问外部5432端口(PostgreSQL默认端口)。修正数据库连接配置
确保连接配置包含Render要求的所有参数,尤其是SSL设置,示例配置如下:const { Pool } = require('pg'); const pool = new Pool({ host: 'dpg-ckdsqhtjhfbs73803ts0-a.oregon-postgres.render.com', port: 5432, user: '你的数据库用户名', password: '你的数据库密码', database: '你的数据库名称', ssl: { rejectUnauthorized: false } });清除本地DNS缓存
若本地DNS解析异常,执行对应系统的缓存清除命令:- Windows:
ipconfig /flushdns - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - Linux:
systemd-resolve --flush-caches
- Windows:
内容的提问来源于stack exchange,提问作者Tejas
相关产品推荐
相关产品推荐

