0

我在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,我收到了这个异常:

截图 2019-11-06 at 10.47.57.png

该请求返回一个 ok 响应,如您在此处看到的:

截图 2019-11-06 at 10.48.10.png

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

  • 使用__dirname +'<path>'
  • 把它放在平原上,比如/<path>...
  • 设置一个内部_next生产目录:/_next/static/....

这是我当前的文件系统:

截图 2019-11-06 at 10.48.39.png

截图 2019-11-06 at 10.49.25.png

正如你所看到的,我在里面都有配置文件/static/js/mail/configthan /_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
  }
}

有人以前经历过这种情况或可以以某种方式帮助我吗?

提前致谢

4

2 回答 2

0

正如我在GitHub 上所说,我终于找到了配置错误的原因__dirname,与Webpack配置有关。正如 StackOverflow 上的建议,通过在Webpack上停用它,如下所示:

{
  node: {
    __dirname: false
  }
}

__dirname客户端仅使用from Node 配置。

但是,不幸的是,这并不能解决我的情况,因为NextJS使用多个Webpack配置 - 用于服务器端而不是客户端 - 所以在我的情况下,如果我尝试修改客户端,返回的路径指向NextJS /pages/api文件夹。

由于我当前托管的无服务器环境 - Zeit.co - 我无法像我一样设置适当的express自定义服务器,我最终选择了第三方服务 - EmailJS

于 2019-12-06T11:03:55.397 回答
0

我不确定这是对这个问题的正确答案,但我面临着类似于下一个 js 和电子邮件模板的问题,并从 nextjs 文档中找到,并且还发现它正在工作:在此处附加代码示例。 在此处输入图像描述

于 2021-07-19T06:18:32.457 回答