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

Node.js通过.env配置MySQL连接失败,直接写入JS则正常

解决使用.env配置MySQL连接时的ENOTFOUND错误

错误getaddrinfo ENOTFOUND '127.0.0.1'的核心原因是你的**.env文件格式错误**:你给变量值加了多余的单引号和逗号,这些符号会被dotenv作为值的一部分读取,导致MySQL尝试连接一个不存在的主机地址'127.0.0.1',(带引号和逗号)。

修正后的.env文件

删除所有单引号和逗号,规范键值对写法(等号前后建议不要留空格,避免潜在问题):

MYSQL_HOST=127.0.0.1
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_DATABASE=notes_app

额外检查项

  • 确保.env文件放在项目根目录,与你的JS入口文件同级;如果路径不同,需在dotenv.config()中指定路径:
    dotenv.config({ path: './指定路径/.env' })
    
  • 重启Node.js进程,确保新的配置生效;
  • 可以临时在代码中添加console.log(process.env.MYSQL_HOST),确认输出是127.0.0.1而非带引号的版本,验证环境变量是否正确读取。

修正后的JS代码(核心逻辑无需修改)

import mysql from "mysql2"
import dotenv from 'dotenv'
// 若.env不在根目录,取消注释并指定路径
// dotenv.config({ path: './path/to/.env' })
dotenv.config()

const pool = mysql.createPool({
    host: process.env.MYSQL_HOST,
    user: process.env.MYSQL_USER,
    password: process.env.MYSQL_PASSWORD,
    database: process.env.MYSQL_DATABASE
}).promise()

async function getAllnotes() {
    const [rows] = await pool.query("SELECT * from notes")
    return rows
}

const notes = await getAllnotes()
console.log(notes)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:23:20