我正在使用node.js,express,ejs和nodemail。如果模板“ mail.ejs”与控制器“ contact.ejs”位于同一文件夹中,我可以使用自定义模板发送邮件,如下所示:
// Folder structure
controllers
contact.js
mail.ejs
// contact.js
const nodemailer = require('nodemailer');
const ejs = require("ejs");
...
const output = await ejs.renderFile(__dirname + "/mail.ejs", {
test: 'Test'
});
...
效果很好...但是现在我想将模板放在其他文件夹中,但是我在努力调用/访问它。 ejs.renderFile(?)应该看起来像具有以下文件夹结构:
// Desired folder structure
controllers
contact.js
views
mail.ejs
// contact.js
const nodemailer = require('nodemailer');
const ejs = require("ejs");
...
const output = await ejs.renderFile(??????, {
test: 'Test'
});
...
__dirname
告诉您包含当前正在执行的文件的目录的绝对路径。
默认情况下,EJS将查找相对于process.cwd()
的文件,C0是启动Node.js进程的目录。 __dirname
是您的JS文件(contact.js
)所在的目录。如果您不想加入__dirname
,则需要相对于Node.js进程的启动路径进行设置。意思是,
如果是文件夹结构,
Root
server.js <--- EJS look for relative paths from here
views
-mail.ejs
和
const output = await ejs.renderFile("/views/mail.ejs", {
test: 'Test'
});