Nodemailer 找不到 txt 文件

Nodemailer cant find txt file

我一直在这里寻找答案,但到目前为止没有任何效果。 基本上我有一个 txt 文件,我想使用 Nodemailer 发送它,就是这样。 但我不断收到此错误: 错误:ENOENT:没有那个文件或目录,打开 'data.txt' 该文件存在并且直接与负责发送它的 .js 文件相同,因此路径正确。 我已经检查了我的 .json 文件,我应该需要的所有包都存在。 这一切都在本地工作,所以我很难理解哪里出了问题。

代码如下:

let nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
service: 'outlook',
auth:{
    user: 'myEmail',
    pass: process.env.MAIL_PASS
}
});

data.map(coin => {
    if(coin.symbol !== 'BNB'){
        top80.push(coin.symbol.toUpperCase());
        cleanedOrders[coin.symbol.toUpperCase()] = [];
        }
    })

        let mailoptions = {
            from: 'senderEmail',
            to: 'toEmail',
            subject: 'Report',
            text: 'Find this months report attached.',
            attachments: [
                {
                    filename: 'report.txt',
                    path: 'data.txt'
                }
            ]
        }
        function getCoinData(numberOfCoins) {
            //should be < -1
            if (numberOfCoins > -1) {
                //console.log('All coin orders captured');
                //email results
                transporter.sendMail(mailoptions, (err, info) => {
                       if(err){
                           console.log(err);
                           res.json(`error compiling report: ${err}`);
                       } else {
                        res.json(`Report sent.`);
                       }
                   });
              }
            }

由于您提供了相对路径,因此 nodemailer 将建立一条 relativeprocess.cwd 的路径。 process.cwd() 是程序的工作目录或想想你的 main.js 文件的位置,你在其中启动程序的文件夹!

假设您有以下文件夹结构:

main.js
-email
--email.js
--data.txt

如果您使用 main.js 启动程序,即使调用文件 email.jsprocess.cwd() 参数也将始终是 main.js 所在的文件夹。

选项 1

  • data.txt 移动到根文件夹(与 main.js 所在的文件夹相同。)它会找到它。

选项 2

  • 提供 nodemailer 的绝对路径,最好使用全局 __dirname

var { join } = requiure('path')
let mailoptions = {
  from: 'senderEmail',
  to: 'toEmail',
  subject: 'Report',
  text: 'Find this months report attached.',
  attachments: [
    {
      filename: 'report.txt',
      
      // __dirname is equal to the directory the file is located in!.
      path: join(__dirname, 'data.txt')
    }
  ]
}