Nodemailer & ejs - 从另一个文件夹渲染模板
Nodemailer & ejs - Render template from another folder
我正在使用 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'
});
...
它工作正常...但现在我想将模板放在不同的文件夹中,但我很难 call/access 它。 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()
相关的文件,Node.js 进程启动的目录。 __dirname
是您的 JS 文件 (contact.js
) 所在的目录。如果您不想加入 __dirname
,您需要将路径设置为相对于 [=25] 的位置=] 进程启动。也就是说,
如果文件夹结构是,
Root
server.js <--- EJS look for relative paths from here
views
-mail.ejs
而且,
const output = await ejs.renderFile("/views/mail.ejs", {
test: 'Test'
});
我正在使用 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'
});
...
它工作正常...但现在我想将模板放在不同的文件夹中,但我很难 call/access 它。 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()
相关的文件,Node.js 进程启动的目录。 __dirname
是您的 JS 文件 (contact.js
) 所在的目录。如果您不想加入 __dirname
,您需要将路径设置为相对于 [=25] 的位置=] 进程启动。也就是说,
如果文件夹结构是,
Root
server.js <--- EJS look for relative paths from here
views
-mail.ejs
而且,
const output = await ejs.renderFile("/views/mail.ejs", {
test: 'Test'
});