You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PayloadCMS发送验证邮件报错:TypeError: req.get is not a function 求助

PayloadCMS 邮件验证报错:TypeError: req.get is not a function

错误原因

用户创建成功触发邮件验证时出现该错误,核心原因是Payload在本地模式(local: true)下运行时,不会生成完整的Express请求对象,而内部的sendVerificationEmail方法尝试调用req.get(),导致类型错误。

解决方案

方案1:禁用本地模式(推荐)

如果你的应用基于Express搭建,初始化Payload时将local设为false,确保使用完整的Express请求上下文:

cached.promise = payload.init({
  email: {
    transport: transporter,
    fromAddress: 'mymail@domain.mail',
    fromName: 'MyApp',
  },
  secret: process.env.PAYLOAD_SECRET,
  local: false, // 禁用本地模式
  ...(initOptions || {}),
})

方案2:手动传入模拟请求对象(脚本/本地测试场景)

若必须在本地模式下运行(如批量创建用户脚本),调用payload.create()时需传入包含get方法的模拟req对象:

await payload.create({
  collection: 'users',
  data: { /* 你的用户数据 */ },
  req: {
    get: () => 'http://localhost:3000' // 模拟获取主机地址的方法
  }
})

补充检查

你的Resend传输配置无明显问题,需确认RESEND_API_KEY已正确加载,且发件地址在Resend后台完成验证。


报错信息

TypeError: req.get is not a function
    at sendVerificationEmail (C:\git\myapp\node_modules\payload\src\auth\sendVerificationEmail.ts:35:36)
    at create (C:\git\myapp\node_modules\payload\src\collections\operations\create.ts:269:28)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
 ⨯ unhandledRejection: TypeError: req.get is not a function
    at sendVerificationEmail (C:\git\myapp\node_modules\payload\src\auth\sendVerificationEmail.ts:35:36)
    at create (C:\git\myapp\node_modules\payload\src\collections\operations\create.ts:269:28)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)

你的配置代码

传输器配置

const transporter = nodemailer.createTransport({
  host: 'smtp.resend.com',
  secure: true,
  port: 465,
  auth: {
    user: 'resend',
    pass: process.env.RESEND_API_KEY,
  },
})

Payload初始化

cached.promise = payload.init({
      email: {
        transport: transporter,
        fromAddress: 'mymail@domain.mail',
        fromName: 'MyApp',
      },
      secret: process.env.PAYLOAD_SECRET,
      local: initOptions?.express ? false : true,
      ...(initOptions || {}),
    })

用户模型

const Users: CollectionConfig = {
    slug: "users",
    auth: {
        verify:{
            generateEmailHTML: ({req, token, user}) => {
                const url = `https://yourfrontend.com/verify?token=${token}`
                return `Hey ${user.email}, verify your email by clicking here: ${url}`
            }
        }
    },
    access: {
        read: () => true,
        create: () => true,
    },
    fields:[
        {
            name: "role",
            defaultValue: "user",
            required: true,
            type: "select",
            options: [
                {label: "Admin", value: "admin"},
                {label: "User", value: "user"}
            ]
        },
        {
            name: "username",
            required: true,
            type: "text"
        }
    ]
}

内容的提问来源于stack exchange,提问作者Code Eagle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:11:26