DEV Community

Cover image for [Error: Failed to collect page data for /seed] { type: 'Error' } in NextJs
Werliton Silva
Werliton Silva

Posted on

[Error: Failed to collect page data for /seed] { type: 'Error' } in NextJs

Estava eu estudando a versão mais recente do Next.js, aproveitando o material oficial da Vercel:nextjs.org/learn

Tudo fluía bem… até o capítulo 6.

Foi quando, ao tentar executar a etapa de Connect and deploy your project, deparei-me com o erro:

Error: Cannot find module '.../node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node'
Enter fullscreen mode Exit fullscreen mode

Aparentemente, era só um problema de instalação. Mas não era bem isso.


O que parecia simples...

A mensagem dizia que o módulo bcrypt não podia ser encontrado. Minha reação imediata foi:

pnpm install
Enter fullscreen mode Exit fullscreen mode

Nada.
Depois:

pnpm approve-builds
Enter fullscreen mode Exit fullscreen mode

Também nada.
Aí fui mais radical:

rm -rf node_modules && pnpm install
Enter fullscreen mode Exit fullscreen mode

E ainda assim, o erro persistia.

O que estava realmente acontecendo

O Next.js, durante o build, executa partes do código para coletar dados e preparar as páginas.
A minha rota /seed, que usava bcrypt, estava sendo interpretada nesse momento.

O problema?

bcrypt depende de bindings nativos que não se comportam bem fora do ambiente de execução correto — especialmente durante o build, onde o contexto não é o mesmo do server runtime.

Ou seja: o erro não era de instalação. Era de contexto.

Como resolvi

Claro que com ajuda do ChatGPT, neh?

Fiz o seguinte:

  • Removi o pacote bcrypt
  • Instalei o bcryptjs e substitui o bcrypt por bcryptjs no /seed

Aprendizado

Esse erro me lembrou de que o Next não é só um framework de frontend — ele executa backend no build. E que bibliotecas nativas nem sempre estão prontas pra isso.

A mensagem de erro pode até dizer "módulo não encontrado", mas o que ela realmente quer dizer é:

“Ei, você está rodando esse código no ambiente errado.”

Já passou por algo assim com Next ou outras libs nativas?
Compartilha comigo — esses perrengues rendem mais aprendizado do que muito tutorial.

Top comments (0)