Nodejs错误:ENOENT:没有这样的文件或目录,状态

时间:2018-08-24 18:49:06

标签: node.js nodemailer email-templates

使用ejs模板发送带有模板的电子邮件以呈现内容 但是在发送电子邮件得到 ENOENT:没有此类文件或目录,统计信息

时遇到此问题

emailcontroller.js

sendEmail: function (req, res, next) {
    try {
        if (req.body.email) {
            var templateDir = path.join(__dirname, 'template','emailView');
            var temp = new EmailTemplate(templateDir);
            let transporter = nodemailer.createTransport({
                 host: 'smtp.gmail.com',
                port: 587,
                secure: false, // 
                auth: {
                  user: 'user@gmail.com', // generated ethereal user
                  pass: 'user12345' // generated ethereal password
                },
                tls: {
                    rejectUnauthorized: false
                }
            });
            var locals = {
                username: "User" //dynamic data for bind into the template
            };
            temp.render(locals, function (err, result) {
                if(err)
                console.log("err",err);
                else {
                        let mailOptions = {
                            from: 'user@gmail.com', // sender address
                            to: req.body.email, // list of receivers
                            subject: 'Welcome ✔', // Subject line
                            html:result.html,
                            text:result.text

                        };
                        transporter.sendMail(mailOptions, (error, info) => {
                            if (error) {
                                res.status(500).send(JSON.stringify({
                                    "status": "failed",
                                    "statuscode": res.statusCode,
                                    "message": error,
                                    "data": null
                                }));
                            } else {
                                res.status(200).send(JSON.stringify({
                                    "status": 0,
                                    "statuscode": res.statusCode,
                                }));

                            }
                        });
                    }
                })

            }

    } catch (err) {
        res.status(500).send(JSON.stringify({
            "status": 2,
            "statuscode": res.statusCode,
            "message": err.message,
            "data": null
        }));
    }

},

我的项目结构

D:\\xampp\\htdocs\\myproject\\controller\\template

其中 template 文件夹下的 emailView.ejs 文件

还添加 app.js

app.engine('html',require('ejs').renderFile);
app.set('view engine', 'ejs');
app.set('view engine', 'html');

我找到了很多解决方案,但是没有用 1.我删除了emailView

( eg :var templateDir = path.join(__dirname, 'template');)

但是我在哪里

Neither html nor text template files found or are both empty in path template

2 个答案:

答案 0 :(得分:0)

要进行故障排除,我将尝试将模板文件放置在代码所在的目录中,然后将其移至发现问题时所需的位置。毫无疑问,这是一个路径问题。

答案 1 :(得分:0)

有效,我已将文件名更改为html.ejs并删除了'emailView'
OLD

  var templateDir = path.join(__dirname, 'template','emailView'); 

  var templateDir = path.join(__dirname, 'template');