【问题标题】:Nodemailer + Handlebars + NextJS - The correct pathNodemailer + Handlebars + NextJS - 正确的路径
【发布时间】:2021-07-19 14:18:32
【问题描述】:

我在为我的 nodemailer/handlebars 设置在 production 中找到正确的路径设置时遇到了问题。 传输器连接到 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 上,我收到了这个异常:

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

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

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

这是我当前的文件系统:

如您所见,我在 /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
  }
}

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

提前致谢

【问题讨论】:

  • 您的 now.json 看起来如何?您是否可能没有像这样构建静态文件夹:{ "src": "/static/*", "use": "@now/static" }
  • 嗨@Edrian,由于这个docs warn,我删除了builds 部分。我用我当前的now.json 配置更新了我的问题。

标签: node.js handlebars.js next.js nodemailer vercel


【解决方案1】:

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

{
  node: {
    __dirname: false
  }
}

只有来自 Node 配置的 __dirname 被用于客户端。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 2020-04-23
      • 2020-05-10
      • 2021-10-24
      相关资源
      最近更新 更多