Nodemailer 错误:“路径”参数必须是字符串类型。收到未定义

时间:2021-04-13 17:42:33

标签: node.js handlebars.js nodemailer express-handlebars

我知道这个错误在 SO 上经常被报告,但我无法解决这个问题,它与 Nodemailer 相关。

尝试发送电子邮件时,服务器崩溃并显示以下错误:

<块引用>

err checkout TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义 在新节点错误(节点:内部/错误:329:5) 在validateString(节点:内部/验证器:129:11) 在 Object.join(节点:路径:1081:7) 在 TemplateGenerator.render (/Users/myname/Desktop/Code/myapp/server/node_modules/nodemailer-express-handlebars/lib/generator.js:19:29) 在 /Users/myname/Desktop/Code/myapp/server/node_modules/nodemailer-express-handlebars/lib/index.js:9:19

代码是:

require("dotenv").config();
import nodemailer from "nodemailer";
import hbs from "nodemailer-express-handlebars";

const transporter = nodemailer.createTransport({
  service: "gmail",
  auth: {
    user: process.env.NODEMAILER_EMAIL,
    pass: process.env.NODEMAILER_PASSWORD,
  },
  tls: {
    rejectUnauthorized: false,
  },
});

transporter.use(
  "compile",
  hbs({
    viewEngine: "express-handlebars",
    viewPaths: "../mails/",
    extName: ".hbs",
  })
);

export class MailControler {
  static confirmSignup(
    { email, username },
    price: string
  ) {
    return transporter.sendMail({
      from: appMail,
      to: email,
      subject: "Hello",
      template: "confirmSignup",
      context: {
        username
      },
    });
  }
}

路线有效,传输器已定义(我可以在终端中用正确的信息记录它),express-handlebars 上下文已定义(我也可以记录变量 username),我也可以记录 process.env 部分。

结构为:

  • 控制器
    • mail.ts
  • 邮件
    • confirmSignup.hbs

所以这里没有目录错误。

这段代码有什么问题?这个未定义的路径参数在哪里?

0 个答案:

没有答案