Я пытаюсь отправить электронное письмо через шаблон HTML, который находится по тому же пути в папке с именем 'view'.Имя HTML-шаблона - «index.handlebars».Но это дает странную ошибку пути, хотя я думаю, что путь абсолютно правильный.Может кто-нибудь, пожалуйста, помогите мне решить эту проблему.
TypeError [ERR_INVALID_ARG_TYPE]: Аргумент "путь" должен иметь тип string.Полученный тип не определен в validateString (internal / validators.js: 125: 11) в Object.resolve (path.js: 161: 7) в ExpressHandlebars._resolveLayoutPath (E: \ NODE JS EXAMPLES \ node-practice-one \ node_modules \ express-handlebars \ lib \ express-handlebars.js: 342: 17) в ExpressHandlebars.(E: \ NODE JS ПРИМЕРЫ \ node-practice-one \ node_modules \ express-handlebars \ lib \ express-handlebars.js: 223: 35)
const express = require('express');
const path = require('path');
const nodemailer = require('nodemailer');
const hbs = require('nodemailer-handlebars');
const log = console.log;
// Step 1
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL || 'abcd@gmail.com', // TODO: your gmail account
pass: process.env.PASSWORD || 'abcd' // TODO: your gmail password
}
});
router.post('/send_mail', (req, res, next) => {
// Step 2
transporter.use(
'compile',
hbs({
viewEngine: 'express-handlebars',
viewPath: './views/'
})
);
// Step 3
let mailOptions = {
from: 'xxx@gmail.com', // TODO: email sender
to: 'yyy@gmail.com', // TODO: email receiver
subject: 'Nodemailer - Test',
text: 'Wooohooo it works!!',
template: 'index',
context: {
name: 'test user'
} // send extra values to template
};
// Step 4
transporter.sendMail(mailOptions, (err, data) => {
console.log(err);
if (err) {
return log('Error occurs');
}
return log('Email sent!!!');
});
});
Пожалуйста, предложите мне, что мне делать, чтобыисправить ошибку.