如何修复升级Win11后React+Node项目出现的ERR_SOCKET_BAD_PORT错误
问题排查与解决步骤
首先从报错栈可以直接定位根因:错误是node-postgres(pg)库连接PostgreSQL数据库时,读取到的端口值为NaN导致,和前端recipe-cards.js代码无关。你测试的/test接口没有操作数据库,所以可以正常返回,只有涉及数据库查询的接口才会触发该错误。
排查步骤
- 第一步:检查pg连接配置文件
poolConfig.js的端口设置
你大概率是用了环境变量读取PG端口,升级Windows 11后可能出现环境变量丢失、变量值被篡改的问题:- 查看项目根目录的
.env文件,确认PGPORT(或你自定义的端口变量)的值为合法数字,一般Postgres默认端口为5432 - 查看
poolConfig.js中端口赋值逻辑,是否存在类型转换错误,比如:// 错误写法:如果process.env.PGPORT为空,parseInt会返回NaN port: parseInt(process.env.PGPORT) // 正确写法:加兜底默认值 port: parseInt(process.env.PGPORT) || 5432
- 查看项目根目录的
- 第二步:硬编码端口测试
临时将poolConfig.js中的端口配置写死为你实际的Postgres端口,跳过环境变量读取,重启nodemon后调用接口测试是否正常。 - 第三步:检查Node版本与pg依赖兼容性
你的package.json中限定了Node版本为11.x,升级Windows 11后可能本地Node版本发生了变化:- 终端执行
node -v查看当前Node版本,若和要求的11.x不一致,建议切换到对应版本,或者将pg依赖升级到最新稳定版 - 可删除
node_modules文件夹和package-lock.json文件,重新执行npm install重装依赖排查兼容问题
- 终端执行
- 第四步:验证Postgres服务状态
- 打开Windows服务列表,确认PostgreSQL服务处于运行状态
- 终端执行
netstat -ano | findstr 5432(将5432替换为你的PG端口),确认端口处于监听状态
内容的提问来源于stack exchange,提问作者ghost
相关产品推荐
相关产品推荐

