Nodejs Ошибка: ENOENT: нет такого файла или каталога, статистика - PullRequest
0 голосов
/ 24 августа 2018

Отправка электронной почты с шаблонами с использованием шаблона 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

, в котором 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 голосов
/ 25 августа 2018

Это работает, я изменил имя файла на html.ejs и удалил 'emailView'
OLD

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

NEW

  var templateDir = path.join(__dirname, 'template'); 
0 голосов
/ 25 августа 2018

Для устранения неполадок я бы попытался поместить файл шаблона в тот же каталог, в котором находится код, и переместить его туда, где он должен быть, когда вы выясните проблему. Без сомнения, это вопрос пути.

...