JOI 电子邮件验证

Kon*_*cht 13 hapijs joi

我使用 Joi 库作为我的 CRA 项目的独立验证器,但是在触发email()验证器时,我收到了神秘错误

Uncaught Error: Built-in TLD list disabled

Ahm*_*ish 20

从 Joi文档

默认情况下,TLD 必须是 IANA 注册机构中列出的有效名称。要禁用验证,请将 tlds 设置为 false。要自定义 TLD 的验证方式,请设置以下其中一项:

允许 - 以下之一:

  • 如果使用已注册 TLD 的 IANA 列表,则为true。这是默认值。
  • false允许任何未在拒绝列表中列出的 TLD(如果存在)。
  • 一组或一组允许的 TLD。不能
    与拒绝一起使用。

要根据 IANA 接受列表禁用 TLD 验证:

email: Joi.string().email({ tlds: { allow: false } });
Run Code Online (Sandbox Code Playgroud)

这应该会禁用验证并允许您接受任何 TLD,即使它不是 IANA 注册的。

  • 如果我们将“允许”设置为 true,则会抛出错误 Uncaught Error:内置 TLD 列表已禁用 (2认同)
  • 即使我们只是说电子邮件:Joi.string().email(); 然后它也会抛出错误错误:内置顶级域名列表已禁用 (2认同)

小智 4

如果您使用的是 joi 16.1.1,此版本中有一些更新,您可以在此处查看更多更新文档。我想这会对你有帮助

email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
Run Code Online (Sandbox Code Playgroud)