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

Nodemailer发送txt附件时报ENOENT错误找不到指定文件问题求助

故障根因

你遇到的ENOENT报错本质是相对路径解析错误:本地运行时你是在js脚本所在目录启动Node进程,进程的工作目录(cwd)和脚本目录一致,所以data.txt的相对路径可以正常解析;但线上环境启动Node进程的工作目录通常不是脚本存放目录,相对路径会被解析到错误的位置,自然找不到文件。

解决方案

修改附件路径为绝对路径,使用Node内置的__dirname变量(该变量固定指向当前执行的js文件所在目录的绝对路径,不受进程启动位置影响),推荐搭配path模块拼接路径兼容多平台:

  1. 先引入path模块:
const path = require('path');
  1. 修改mailoptions中的附件路径配置:
attachments: [
    {
        filename: 'report.txt',
        path: path.join(__dirname, 'data.txt') // 替换原来的相对路径'data.txt'
    }
]

额外排查项

如果修改后仍报错,可以按顺序核对:

  • 确认线上部署包中确实包含data.txt文件,部分部署配置会默认忽略.txt后缀的非代码文件
  • 确认Node进程对data.txt文件有读取权限,权限不足时部分系统也会抛出ENOENT错误
  • 可以在发送邮件的逻辑前加日志验证路径是否正确:
console.log('文件路径:', path.join(__dirname, 'data.txt'))
console.log('文件是否存在:', require('fs').existsSync(path.join(__dirname, 'data.txt')))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:36:08