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

Next-Auth signIn触发@typescript-eslint/no-misused-promises错误的解决咨询

解决Next-Auth中signIn触发的@typescript-eslint/no-misused-promises错误

这个错误的核心原因是:signIn()返回一个Promise,但React的onClick事件处理函数要求返回值为void,ESLint认为直接返回Promise属于误用场景。下面是几种解决方案,按推荐程度排序:

1. 最优方案:手动处理Promise(推荐)

通过async/await显式处理Promise,既符合ESLint规范,又能灵活处理登录成功/失败的逻辑:

<button onClick={async () => {
  try {
    await signIn();
    // 登录成功后的逻辑(可选)
  } catch (error) {
    // 处理登录失败,比如提示用户
    console.error('登录失败', error);
  }
}}>Login</button>

如果不需要处理错误,也可以简化为:

<button onClick={async () => { await signIn(); }}>Login</button>

2. 局部禁用规则(临时场景可用)

如果只是临时测试,不想处理Promise,可以用单行注释局部禁用该规则,避免影响其他代码:

// eslint-disable-next-line @typescript-eslint/no-misused-promises
<button onClick={() => signIn()}>Login</button>

不建议使用整个文件的禁用注释,会失去该规则对其他代码的防护作用。

3. 修改全局ESLint配置(谨慎使用)

如果项目中有大量类似场景,确实需要全局调整规则,可以修改.eslintrc.json,关闭React事件属性的Promise检查:

{
  "rules": {
    "@typescript-eslint/no-misused-promises": [
      "error",
      {
        "checksVoidReturn": {
          "attributes": false
        }
      }
    ]
  }
}

但这种方式会全局关闭该规则对事件属性的检查,可能遗漏潜在的未处理Promise问题,除非有明确的全局需求,否则不推荐。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:55:37