“Module not found” no Next.js: o erro que quase me fez desistir do tutorial
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.

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.