Node.js中使用dotenv加载.env环境变量失败的问题排查
问题:使用dotenv加载环境变量失败(WhatsApp聊天机器人开发)
我正在开发WhatsApp聊天机器人,尝试用dotenv包将API密钥存储到.env文件中,但出现环境变量未赋值的错误。
原教程index.js片段
import { createBot } from 'whatsapp-cloud-api'; const { createBot } = require('whatsapp-cloud-api'); (async () => { try { // replace the values below const from = 'YOUR_WHATSAPP_PHONE_NUMBER_ID'; const token = 'YOUR_TEMPORARY_OR_PERMANENT_ACCESS_TOKEN'; const to = 'PHONE_NUMBER_OF_RECIPIENT'; const webhookVerifyToken = 'YOUR_WEBHOOK_VERIFICATION_TOKEN';
我修改后的index.js片段
const { createBot } = require('whatsapp-cloud-api'); const dotenv = require('dotenv'); dotenv.config(); (async () => { try { const from = process.env.FROM; const token = process.env.TOKEN; const to = process.env.TO; const webhookVerifyToken = process.env.WEBHOOKVerifyToken;
当前的.env文件内容
const FROM = YOUR_WHATSAPP_PHONE_NUMBER_ID const TOKEN = YOUR_TEMPORARY_OR_PERMANENT_ACCESS_TOKEN const TO = PHONE_NUMBER_OF_RECIPIENT const WEBHOOKVerifyToken = YOUR_WEBHOOK_VERIFICATION_TOKEN
错误原因及修正步骤
1. .env文件格式不符合dotenv要求
dotenv的.env文件禁止使用const声明变量,正确格式为KEY=VALUE(值若包含空格/特殊字符需用引号包裹):
修正后的.env文件:
FROM=YOUR_WHATSAPP_PHONE_NUMBER_ID TOKEN=YOUR_TEMPORARY_OR_PERMANENT_ACCESS_TOKEN TO=PHONE_NUMBER_OF_RECIPIENT WEBHOOK_VERIFY_TOKEN=YOUR_WEBHOOK_VERIFICATION_TOKEN
2. 环境变量命名不一致(大小写敏感)
环境变量名区分大小写,建议使用蛇形命名(下划线分隔)统一规范。将WEBHOOKVerifyToken改为WEBHOOK_VERIFY_TOKEN后,同步修改index.js中的对应代码:
const webhookVerifyToken = process.env.WEBHOOK_VERIFY_TOKEN;
3. 额外验证项
- 确认已安装dotenv:执行
npm install dotenv - 确保.env文件位于项目根目录,与index.js同级
- 修改.env文件后需重启Node.js服务,新配置才会生效
内容的提问来源于stack exchange,提问作者matthew_olckers
相关产品推荐
相关产品推荐

