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
相关产品推荐
相关产品推荐

