“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.

May 9, 2025 - 02:44
 0
“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.