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'
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
Nada.
Depois:
pnpm approve-builds
Também nada.
Aí fui mais radical:
rm -rf node_modules && pnpm install
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)