Nodemailer + Handlebars + NextJS - 正确的路径
Nodemailer + Handlebars + NextJS - The correct path
我在 production
中为我的 nodemailer/handlebars 设置找到正确的路径设置时遇到问题。
传输器已连接到 API 请求以发送自动电子邮件。
在development
中,我将配置保持原样,所以基本上我遇到了这种情况:
module.exports.ViewOption = (transport, hbs) => {
transport.use('compile', hbs({
viewEngine: {
extname: '.hbs',
partialsDir: 'static/js/mail/views/email',
layoutsDir: 'static/js/mail/views',
defaultLayout: 'contacts'
},
viewPath: 'static/js/mail/views',
extName: '.hbs'
}));
}
没问题,一切正常。
在 Now
上,我收到此异常:
请求 returns 响应正常,您可以在此处看到:
所以我断定问题与传输器配置中设置的错误路径有关。我不能像在 dev
上那样生活,因为它会在 /var/tasks
上重定向。问题是我尝试了不同的方法来正确定位文件路径,但没有成功:
- 使用
__dirname +'<path>'
- 如
/<path>...
那样简单地放置
- 设置里面的那个
_next
生产目录:/_next/static/....
这是我当前的文件系统:
如您所见,我在 /static/js/mail/config
和 /_next/static/js/mail/config
上都有配置文件。 None 两者都有效,调用每次都以相同的错误响应,独立于其路径。
这是我目前的 now.json
如果对您有帮助:
{
"public": false,
"name": "LC",
"version": 2,
"routes": [{
"src": "/resume",
"dest": "https://lucacattide.dev/static/html/resume.html"
}, {
"src": "/robots.txt",
"dest": "https://lucacattide.dev/static/robots.txt"
}, {
"src": "/sitemap.xml",
"dest": "https://lucacattide.dev/static/sitemap.xml"
}, {
"src": "^/service-worker.js$",
"dest": "/_next/static/service-worker.js",
"headers": {
"cache-control": "public, max-age=43200, immutable",
"Service-Worker-Allowed": "/"
}
}],
"env": {
"RECAPTCHA_SECRET_KEY": "@recaptcha",
"SMTP_SERVICE_HOST": "@smtp_host",
"SMTP_SERVICE_PORT": "@smtp_port",
"SMTP_SERVICE_SECURE": "@smtp_secure",
"SMTP_USER_NAME": "@smtp_name",
"SMTP_USER_PASSWORD": "@smtp_password",
"SMTP_LOG_NAME": "@smtp_log"
},
"github": {
"enabled": true,
"autoAlias": false
}
}
有没有人以前遇到过这种情况或者能以某种方式帮助我?
提前致谢
正如我在GitHub上所说,最后我找到了__dirname
配置错误的原因,与Webpack配置有关。根据 Whosebug 上的建议,通过在 Webpack 上停用它,如下所示:
{
node: {
__dirname: false
}
}
客户端仅使用节点配置中的 __dirname
。
但是,不幸的是,这并没有解决我的情况,因为 NextJS 使用了不止一个 Webpack 配置 - 都用于服务器 -侧而不是客户端 - 所以在我的例子中,如果我尝试修改客户端,返回的路径指向 NextJS /pages/api
文件夹。
由于我当前托管的无服务器环境 - Zeit.co - is impossible to my to set up a proper express
custom server as I would, I finally opted for a third-party service - EmailJS。
我不确定这是对这个问题的正确答案,但我遇到了类似于 next js 和电子邮件模板的问题,我从 nextjs 文档中找到了它,并且发现它可以正常工作:附上此处附带的代码示例。
我在 production
中为我的 nodemailer/handlebars 设置找到正确的路径设置时遇到问题。
传输器已连接到 API 请求以发送自动电子邮件。
在development
中,我将配置保持原样,所以基本上我遇到了这种情况:
module.exports.ViewOption = (transport, hbs) => {
transport.use('compile', hbs({
viewEngine: {
extname: '.hbs',
partialsDir: 'static/js/mail/views/email',
layoutsDir: 'static/js/mail/views',
defaultLayout: 'contacts'
},
viewPath: 'static/js/mail/views',
extName: '.hbs'
}));
}
没问题,一切正常。
在 Now
上,我收到此异常:
请求 returns 响应正常,您可以在此处看到:
所以我断定问题与传输器配置中设置的错误路径有关。我不能像在 dev
上那样生活,因为它会在 /var/tasks
上重定向。问题是我尝试了不同的方法来正确定位文件路径,但没有成功:
- 使用
__dirname +'<path>'
- 如
/<path>...
那样简单地放置
- 设置里面的那个
_next
生产目录:/_next/static/....
这是我当前的文件系统:
如您所见,我在 /static/js/mail/config
和 /_next/static/js/mail/config
上都有配置文件。 None 两者都有效,调用每次都以相同的错误响应,独立于其路径。
这是我目前的 now.json
如果对您有帮助:
{
"public": false,
"name": "LC",
"version": 2,
"routes": [{
"src": "/resume",
"dest": "https://lucacattide.dev/static/html/resume.html"
}, {
"src": "/robots.txt",
"dest": "https://lucacattide.dev/static/robots.txt"
}, {
"src": "/sitemap.xml",
"dest": "https://lucacattide.dev/static/sitemap.xml"
}, {
"src": "^/service-worker.js$",
"dest": "/_next/static/service-worker.js",
"headers": {
"cache-control": "public, max-age=43200, immutable",
"Service-Worker-Allowed": "/"
}
}],
"env": {
"RECAPTCHA_SECRET_KEY": "@recaptcha",
"SMTP_SERVICE_HOST": "@smtp_host",
"SMTP_SERVICE_PORT": "@smtp_port",
"SMTP_SERVICE_SECURE": "@smtp_secure",
"SMTP_USER_NAME": "@smtp_name",
"SMTP_USER_PASSWORD": "@smtp_password",
"SMTP_LOG_NAME": "@smtp_log"
},
"github": {
"enabled": true,
"autoAlias": false
}
}
有没有人以前遇到过这种情况或者能以某种方式帮助我?
提前致谢
正如我在GitHub上所说,最后我找到了__dirname
配置错误的原因,与Webpack配置有关。根据 Whosebug 上的建议,通过在 Webpack 上停用它,如下所示:
{
node: {
__dirname: false
}
}
客户端仅使用节点配置中的 __dirname
。
但是,不幸的是,这并没有解决我的情况,因为 NextJS 使用了不止一个 Webpack 配置 - 都用于服务器 -侧而不是客户端 - 所以在我的例子中,如果我尝试修改客户端,返回的路径指向 NextJS /pages/api
文件夹。
由于我当前托管的无服务器环境 - Zeit.co - is impossible to my to set up a proper express
custom server as I would, I finally opted for a third-party service - EmailJS。
我不确定这是对这个问题的正确答案,但我遇到了类似于 next js 和电子邮件模板的问题,我从 nextjs 文档中找到了它,并且发现它可以正常工作:附上此处附带的代码示例。