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

Node.js+Express+TypeScript构建API时MySQL连接ENOTFOUND错误求助

getaddrinfo ENOTFOUND 错误排查建议(Node.js/Express/TypeScript+MySQL场景)
  • 核对Express项目与测试脚本的数据库配置

    • 确保项目中数据库连接的主机名、端口、用户名、密码和测试脚本完全一致,排查拼写错误(比如主机名多空格、端口号写错)
    • 检查环境变量加载逻辑:如果使用dotenv,确认.env文件路径正确,变量名与代码中读取的一致(比如代码用process.env.DB_HOST,.env里不能写成DB_HOSTNAME)
    • 在连接代码前打印实际配置:添加console.log('DB Config:', { host: process.env.DB_HOST, port: process.env.DB_PORT }),对比输出与测试脚本的参数
  • 排查依赖版本与冲突

    • 对比两个项目的mysql2版本:执行npm list mysql2查看版本号,若差异较大,将Express项目的mysql2升级/降级到测试脚本的版本
    • 检查重复依赖:执行npm ls查看是否存在多版本mysql2,必要时删除node_modules和package-lock.json,重新执行npm install
  • 验证网络与MySQL监听配置

    • 测试端口连通性:在Express项目运行机器执行telnet 127.0.0.1 3306(默认端口),确认能正常连通
    • 排查防火墙拦截:暂时关闭防火墙或安全软件,测试是否能连接
    • 检查MySQL绑定地址:查看my.cnf/my.ini中的bind-address配置,确保设置为0.0.0.0或127.0.0.1,而非仅绑定特定IP
  • 检查Express项目的连接逻辑

    • 确认连接时机:排查是否在配置未加载完成时就发起连接(比如异步加载环境变量但未等待完成)
    • 核对连接池配置:如果使用连接池,检查connectionLimit等参数是否合理,对比测试脚本的连接方式(createConnection vs createPool)
    • 逐行对比连接代码:找出测试脚本与Express项目连接逻辑的差异,排查是否有参数遗漏或配置错误
  • 检查TypeScript编译与运行环境

    • 验证编译产物:查看dist目录下的JS文件,确认数据库配置被正确编译,无变量替换错误
    • 排查隔离环境问题:如果Express在Docker容器中运行,需用host.docker.internal代替127.0.0.1访问宿主机MySQL
    • 检查TS编译选项:确认路径别名等配置未导致配置文件路径错误

内容的提问来源于stack exchange,提问作者user14932992

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:50:57