Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Validação de campo imagem com Next e Zod

Como eu valido um campo de imagem no next?

image: z
        .instanceof(FileList)
        .transform((list) => list.item(0)),

Tentei deste modo, mas diz que FileList é indefinido pois só existe no ambiente do navegador.

2 respostas
solução!

Oi Jose, tudo bem?

Pelo que entendi, você está tentando validar um campo de imagem com o Next.js e Zod, mas está enfrentando problemas porque o FileList é indefinido fora do ambiente do navegador.

Isso ocorre porque o Next.js é uma estrutura de aplicativo da web baseada em React que é renderizada no servidor. Portanto, o objeto FileList, que é uma API da web fornecida pelos navegadores, não está disponível no ambiente de renderização do servidor.

Uma abordagem possível para contornar isso seria verificar se o objeto FileList está disponível antes de usá-lo. Você pode fazer isso adicionando uma condição para verificar se o tipo 'FileList' existe. Se existir, você pode prosseguir com a validação, caso contrário, você pode retornar um valor padrão ou lançar um erro.

Aqui está um exemplo de como você pode fazer isso:

image: z
  .instanceof(typeof FileList !== 'undefined' ? FileList : Object)
  .transform((list) => list.item(0)),

Neste exemplo, se FileList estiver disponível, ele será usado para a validação. Se não estiver disponível (ou seja, se estivermos no ambiente do servidor), Object será usado em vez disso. Isso evitará o erro de FileList indefinido.

Por favor, note que essa é apenas uma solução potencial e pode não ser perfeita para o seu caso específico. A melhor solução dependerá dos detalhes específicos do seu aplicativo e dos requisitos de validação.

Espero ter ajudado.

Um abraço e bons estudos.

Muito obrigado, pela resposta!