← todos os posts

"Funciona no meu PC e morre no ar: a semana que eu passei nisso há 12 anos (e por que você passa em 2 dias)"

Em 2014 perdi uma semana num sistema que rodava na minha máquina e morria no servidor. Eram três erros, os mesmos de hoje. Como achar cada um pelo log.

"A IA gerou, mas onde está meu app?"

A frase é de um programador brasileiro, num fórum, em fevereiro de 2026, imitando quem não é da área. Quero contar a versão que ninguém conta: a de quando quem trava é o programador. Eu travei, exatamente nisso, e demorei uma semana.

2014, um servidor que eu não podia ver

Eu tinha uns três anos de carreira. O sistema era de um cliente, rodava lindo no meu computador com Windows, e o servidor onde ia morar era Linux, alugado, que eu só via por uma janela preta de terminal. Publiquei numa sexta. Morreu. Tela branca, a mesma que você conhece.

Eu não era burro e você também não é. O que eu não tinha era um mapa. A semana inteira foi descobrir, um por um, que "funciona no meu PC" esconde três erros que não têm nada a ver entre si.

Segunda e terça: o caminho. O código pedia uma imagem chamada logo.png. O arquivo se chamava Logo.png. No Windows, é o mesmo arquivo. No Linux, são dois, e o segundo não existia. A documentação da Netlify de hoje descreve o meu 2014 palavra por palavra: "se você desenvolve no Windows ou no macOS e seu código inclui algo como jQuery/jquery.js, o build pode falhar, porque o sistema de arquivos usado nos builds diferencia maiúsculas e o seu ambiente não. As mensagens de erro podem não deixar isso claro!" (Build é a montagem do app pra publicar.) Doze anos, e a frase continua lá porque o erro continua acontecendo.

Quarta: a chave. Consertado o caminho, o sistema abria e não conectava em nada. A senha do banco estava num arquivo de configuração no meu computador. No servidor, o arquivo não existia, porque eu nunca tinha mandado; e nunca tinha mandado porque não tinha entendido que ele era separado do código. Hoje isso tem nome, variável de ambiente, e mora em três lugares. Em 2014 eu achava que morava num.

Quinta e sexta: o banco. Chave certa, o sistema entrou e quebrou na primeira tela com dado. No meu computador, o banco era um arquivo leve, com trinta cadastros de teste que eu mesmo tinha digitado. No servidor, era outro programa de banco, vazio, com uma tabela que o meu código esperava e ninguém tinha criado lá. Um documento de 2011 chamado Twelve-Factor App, que eu só li anos depois, já avisava: usar um banco leve na sua máquina e um "mais sério" em produção faz "pequenas incompatibilidades" aparecerem, "fazendo código que funcionava e passava nos testes em desenvolvimento falhar em produção".

Três erros. Nenhum era de lógica. Nenhum era de programação. Eram de lugar: o código era o mesmo e o mundo em volta dele, não.

Por que você passa em dois dias, não numa semana

Não é porque você é melhor do que eu era. É que três coisas mudaram.

A primeira: a plataforma escreve o diário. Vercel, Netlify e Lovable guardam o log, o registro linha por linha do que aconteceu quando o app tentou subir. Em 2014 eu tinha uma tela branca e um chute. Você tem a frase exata.

A segunda: o mapa existe. Os três erros são conhecidos, têm nome, e cada um deixa uma pista diferente no log. Eu levei uma semana porque não sabia que eram três; procurava um erro só.

A terceira: alguém lê o log por você. A IA não sabe consertar o seu servidor, mas traduz uma linha de erro em português. Ninguém traduzia pra mim.

O que fazer hoje: leia o log com o mapa na mão

Abra o log da sua última publicação (Netlify: aba Deploys, clique no deploy; Vercel: aba Logs; Lovable: Cloud → Logs, e aperte Refresh). Leia as últimas trinta linhas, de baixo pra cima. Procure uma destas famílias:

Se o log diz O erro é de Pergunte pra IA
Cannot find module, could not resolve, no such file, e o nome aparece com maiúscula diferente do arquivo caminho "Liste todo arquivo que o código pede cujo nome não bate letra por letra com o arquivo no disco. Não mude nada."
undefined, is not defined, Missing, Invalid API key, 401 chave "Liste as variáveis de ambiente que este projeto lê e me diga qual delas falta no ambiente de produção."
relation does not exist, no such table, column ... does not exist banco "Qual tabela ou coluna o código espera que não existe no banco de produção? Me mostre o que criar, sem rodar."
Unsupported engine, node version, requires Node versão "Qual versão do Node o projeto pede, e qual a plataforma está usando?"

A quarta linha é o erro que eu não tive em 2014 e você tem hoje: a documentação da Netlify diz que, se o build funciona na sua máquina, "o próximo passo é garantir que as versões de pacote que usamos no build batem com as suas", e chama isso de "a principal causa de falha de build". A regra é simples: a versão do Node na plataforma tem que ser a mesma que aparece quando você digita node -v na sua máquina, aquele número da etapa 5.

Uma família por vez. Consertou uma, republicou, conferiu em janela anônima, aí a próxima. Foi assim que eu saí em 2014, só que sem tabela.

O que isso era, na parede inteira

"Funciona no meu PC" é a parede entre rodar na sua máquina e rodar na internet, dois lugares diferentes. O que ela ensina é que o app não é só o código: é o código mais o lugar onde ele roda, e o lugar tem caminho, chave, banco e versão próprios. Ser dono é conhecer os quatro.

Minha semana de 2014 virou uma tabela de quatro linhas. O que a tabela não faz é dizer qual linha é a sua, no seu log. Isso ainda precisa de um par de olhos, e é o que eu faço hoje, com o projeto dos outros na tela. Mas você já sabe que a parede tem quatro tijolos, não um. Em 2014 ninguém me disse isso.

Fontes