Node.js中使用dotenv读取config目录下.env文件API密钥失败求助
Node.js dotenv无法从config目录加载API密钥到routes/weather.js的解决办法
指定正确的.env文件路径
由于你的.env放在config目录,而weather.js在routes目录,加载dotenv时必须明确指定路径。先引入path模块,再用相对路径拼接:const path = require('path'); require('dotenv').config({ path: path.resolve(__dirname, '../config/.env') });也可以用项目根目录作为基准(更可靠):
require('dotenv').config({ path: path.join(process.cwd(), 'config/.env') });检查.env文件格式
确保密钥定义没有多余空格或引号,正确格式如下:OPENWEATHER_API_KEY=你的实际密钥内容验证环境变量是否加载成功
在weather.js加载dotenv后立即打印变量,确认是否存在:console.log(process.env.OPENWEATHER_API_KEY);如果输出
undefined,说明路径配置错误,需要重新调整路径拼接逻辑。优化加载方式(最佳实践)
建议在项目入口文件(如app.js、server.js)中统一加载dotenv,这样所有子模块无需重复加载即可直接使用环境变量:// 入口文件中 const path = require('path'); require('dotenv').config({ path: path.resolve(__dirname, 'config/.env') });之后在weather.js里直接调用
process.env.OPENWEATHER_API_KEY即可。排查拼写错误
确认.env中的变量名和代码中调用的完全一致,包括大小写(process.env变量名区分大小写)。
内容的提问来源于stack exchange,提问作者Rafael Silva de Souza
相关产品推荐
相关产品推荐

