Nodemailer +把手+ NextJS-正确的路径

时间:2019-11-06 13:18:45

标签: node.js handlebars.js next.js nodemailer zeit-now

我遇到问题,无法在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上,我收到此异常:

Screenshot 2019-11-06 at 10.47.57.png

该请求返回一个正确的响应,如您在此处看到的那样:

Screenshot 2019-11-06 at 10.48.10.png

因此,我得出结论,问题与在传输器配置上设置的错误路径有关。我不能像在dev上那样生活,因为它在/var/tasks上重定向。问题是我尝试了不同的方法来正确定位文件路径,但是没有成功:

  • 使用__dirname +'<path>'
  • 将其放置在/<path>...之类的平原上
  • _next生产目录中设置一个:/_next/static/....

这是我当前的文件系统:

Screenshot 2019-11-06 at 10.48.39.png

Screenshot 2019-11-06 at 10.49.25.png

如您所见,我的配置文件都位于/static/js/mail/config而非/_next/static/js/mail/config上。两者都不起作用,呼叫每次都以相同的错误进行响应,而独立于其路径。

这可能是我目前的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
  }
}

任何人都曾经经历过这个问题,或者可以以某种方式帮助我吗?

预先感谢

2 个答案:

答案 0 :(得分:0)

正如我在GitHub上所述,最终我发现__dirname配置错误的原因,与 Webpack 配置有关。如StackOverflow建议的那样,通过在 Webpack 上将其停用,如下所示:

{
  node: {
    __dirname: false
  }
}

客户端仅使用节点配置中的__dirname

但是,不幸的是,这不能解决我的问题,因为 NextJS 使用多个 Webpack 配置-服务器端和客户端都使用-因此就我而言,如果我尝试修改客户端,则返回的路径指向 NextJS /pages/api文件夹。

由于我当前的托管服务Zeit.co的无服务器环境使我无法像我那样建立适当的express自定义服务器,因此我最终选择了第三个-派对服务-EmailJS

答案 1 :(得分:0)

我不确定这是对这个问题的正确答案,但我遇到了类似于 next js 和电子邮件模板的问题,从 nextjs 文档中找到,并且发现它正在工作:附上此处附加的代码示例。 enter image description here