Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

432
Visualizações
Next.JS: error al verificar si la ventana == indefinido: la hidratación falló porque la interfaz de usuario inicial no coincide con lo que se representó en el servidor

Estoy teniendo el siguiente error:

La hidratación falló porque la interfaz de usuario inicial no coincide con lo que se representó en el servidor.

Estoy usando getServerSideProps y en mi página, compruebo si estamos en el navegador ( window=='undefined' ) y luego devuelvo las cosas en consecuencia:

 export default function Page() { const { data: session } = useSession() if (typeof window == 'undefined') return null if (session) { return ( <div> <h1>Protected Page</h1> <p>You can view this page because you are signed in.</p> </div> ) } return <p>Access Denied</p> }

Pero esta línea aquí

 if (typeof window == 'undefined') return null

parece ser el problema. Cuando esta línea está comentada, todo funciona.

También es cierto que lo que se devuelve en el lado del servidor será diferente a lo que se devuelve en el lado del cliente, pero no entiendo completamente cómo debo resolver este problema y por qué es un problema.

Estoy haciendo esta verificación precisamente porque solo quiero mostrar esta página en el lado del cliente y cuando tengo una sesión. ¿Estoy malinterpretando esto?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El objetivo de SSR es renderizar previamente la página en el servidor. Si en el servidor su página siempre se vuelve null , no hay necesidad de usar SSR.

Si desea renderizar previamente la página solo si existe una sesión, debe verificar la sesión en el servidor, dentro de getServerSideProps .

Si verifica la sesión dentro del componente de la página, la verificación se realiza en el cliente y nuevamente no sería necesario usar getServerSideProps .

Aquí hay un ejemplo tomado de uno de mis proyectos, en el que usé NextAuth para administrar la autenticación:

 import { getSession } from 'next-auth/client'; // ...your page component here... export async function getServerSideProps(context) { const session = await getSession({ req: context.req }); if (session) { return { props: { session } }; } else { return { redirect: { destination: '/auth', permanent: false, } }; } }

En este fragmento, la sesión se verifica en el servidor.
Si existe una sesión, se podrá acceder a ella en el componente de la página a través de sus props .
Si la sesión no existe, se redirige al usuario a la página de autenticación.

PD: acabo de revisar los documentos y parece que la importación ha cambiado a 'next-auth/react' (que, por cierto, tiene más sentido ya que usar /client en el servidor es engañoso).

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda