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 上重定向。问题是我尝试了不同的方法来正确定位文件路径,但没有成功:

这是我当前的文件系统:

如您所见,我在 /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 文档中找到了它,并且发现它可以正常工作:附上此处附带的代码示例。