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

Node.js使用Nodemailer运行sendEmail.js报错:未定义EMAIL_SMTP配置项

解决Nodemailer配置读取失败问题

针对你遇到的配置目录未找到和Error: Configuration property "EMAIL_SMTP" is not defined问题,按以下步骤排查:

1. 修正config模块的路径指向

config模块默认读取项目根目录下的config文件夹,而你的配置目录在/home/ayeen/manage/proj-ang/server/utils/config,需要手动指定路径:

// sendEmail.js 顶部添加路径设置
const config = require('config');
config.util.setPath('/home/ayeen/manage/proj-ang/server/utils/config');

// 之后再获取配置
const emailSmtp = config.get('EMAIL_SMTP');

或者通过环境变量提前指定:

# 运行项目前设置
export NODE_CONFIG_DIR=/home/ayeen/manage/proj-ang/server/utils/config

2. 检查default.json的格式与内容

确保JSON无语法错误,且EMAIL_SMTP为顶级配置项:

// /home/ayeen/manage/proj-ang/server/utils/config/default.json
{
  "EMAIL_SMTP": {
    "host": "smtp.gmail.com",
    "port": 587,
    "secure": false,
    "auth": {
      "user": "your-email@domain.com",
      "pass": "your-app-password"
    }
  }
}

注意:JSON不允许末尾多余逗号,可使用jsonlint工具快速校验格式。

3. 验证config模块的读取逻辑

在sendEmail.js中添加调试代码,确认配置是否被正确加载:

const config = require('config');
config.util.setPath('/home/ayeen/manage/proj-ang/server/utils/config');

// 打印全部配置,确认是否包含EMAIL_SMTP
console.log('Loaded config:', config);

try {
  const emailSmtp = config.get('EMAIL_SMTP');
  console.log('Email SMTP config:', emailSmtp);
} catch (err) {
  console.error('Config error:', err.message);
}

如果打印的config为空,说明路径或文件权限存在问题。

4. 检查文件权限与路径拼写

Linux系统下确保config目录和default.json有可读权限:

chmod -R 644 /home/ayeen/manage/proj-ang/server/utils/config

同时确认路径拼写无大小写错误(Linux路径区分大小写)。

5. 排除环境变量干扰

如果设置了NODE_ENV,config模块会优先加载对应环境的配置文件(比如development.json),若该文件未定义EMAIL_SMTP会报错。可以临时取消环境变量测试:

unset NODE_ENV
node sendEmail.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:22:39