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

Next.js中出现‘Error: Abort fetching component for route: "/settings"’错误如何修复

问题修复方案

问题原因

控制台出现的Error: Abort fetching component for route: "/settings"错误,是因为你在Home组件的渲染阶段直接调用router.push触发路由跳转。Next.js在组件渲染过程中如果发生路由变更,会中止当前组件的渲染流程,从而抛出这个错误。

修复步骤

修改Home组件代码,将路由跳转逻辑放到useEffect中执行(useEffect会在组件渲染完成后触发,不会打断渲染流程):

import React, { useEffect } from 'react'
import { useRouter } from 'next/router'
import { useSession } from 'next-auth/react'
import { Login } from '@/components/Login/Login'

export default function Home() {
  const router = useRouter()
  const callbackUrl = (router.query?.callbackUrl as string) ?? '/dashboard'
  const { data: session, status } = useSession()

  const loading = status === 'loading'

  // 用useEffect处理登录后的路由跳转
  useEffect(() => {
    if (session) {
      router.push(callbackUrl)
    }
  }, [session, callbackUrl, router])

  if (loading) {
    // 可替换为自定义加载组件,比如Spinner
    return <div>加载中...</div>
  }

  if (!session) {
    return <Login />
  }

  // 跳转前返回空或加载组件,避免页面空白
  return null
}

额外说明

  • 登录按钮的signIn('cognito', { redirect: false })逻辑无需修改,保持手动控制跳转时机的逻辑即可。
  • 补充loading状态的渲染内容,避免用户在session校验过程中看到空白页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:17:27