fix: Simplificar vercel.json para resolver problemas de build
This commit is contained in:
186
TROUBLESHOOT_VERCEL.md
Normal file
186
TROUBLESHOOT_VERCEL.md
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
# 🔧 TROUBLESHOOTING - VERCEL BUILD
|
||||||
|
|
||||||
|
## 🚨 ERROS COMUNS E SOLUÇÕES
|
||||||
|
|
||||||
|
### 1. Erro: "Module not found" ou "Cannot find module"
|
||||||
|
|
||||||
|
**Solução:**
|
||||||
|
```bash
|
||||||
|
# No terminal local, teste o build:
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Se funcionar local mas falhar na Vercel:
|
||||||
|
# Verifique se todas as dependências estão no package.json
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Erro: "TypeScript errors"
|
||||||
|
|
||||||
|
**Solução A - Desabilitar verificação de tipos no build:**
|
||||||
|
|
||||||
|
Adicione no `vite.config.ts`:
|
||||||
|
```typescript
|
||||||
|
export default defineConfig({
|
||||||
|
build: {
|
||||||
|
// ... outras configs
|
||||||
|
},
|
||||||
|
esbuild: {
|
||||||
|
logOverride: { 'this-is-undefined-in-esm': 'silent' }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
**Solução B - Ignorar erros de TypeScript:**
|
||||||
|
|
||||||
|
No `package.json`, mude o build command:
|
||||||
|
```json
|
||||||
|
"build": "vite build --mode production"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Erro: "Out of memory" ou "JavaScript heap out of memory"
|
||||||
|
|
||||||
|
**Solução:**
|
||||||
|
|
||||||
|
Adicione no `package.json`:
|
||||||
|
```json
|
||||||
|
"scripts": {
|
||||||
|
"build": "NODE_OPTIONS='--max-old-space-size=4096' vite build"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Ou configure na Vercel:
|
||||||
|
- Settings → General → Build & Development Settings
|
||||||
|
- Build Command: `NODE_OPTIONS='--max-old-space-size=4096' npm run build`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Erro: "Failed to resolve import"
|
||||||
|
|
||||||
|
**Solução:**
|
||||||
|
|
||||||
|
Verifique se todos os imports estão corretos:
|
||||||
|
```typescript
|
||||||
|
// ❌ Errado
|
||||||
|
import { Component } from './Component'
|
||||||
|
|
||||||
|
// ✅ Correto
|
||||||
|
import { Component } from './Component.tsx'
|
||||||
|
```
|
||||||
|
|
||||||
|
Ou adicione no `vite.config.ts`:
|
||||||
|
```typescript
|
||||||
|
export default defineConfig({
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.tsx', '.ts', '.jsx', '.js']
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. Erro: "Environment variables not defined"
|
||||||
|
|
||||||
|
**Solução:**
|
||||||
|
|
||||||
|
Verifique se as variáveis estão configuradas na Vercel:
|
||||||
|
- Settings → Environment Variables
|
||||||
|
- Certifique-se que estão marcadas para Production
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 6. Erro: "Build exceeded maximum duration"
|
||||||
|
|
||||||
|
**Solução:**
|
||||||
|
|
||||||
|
Otimize o build no `vite.config.ts`:
|
||||||
|
```typescript
|
||||||
|
export default defineConfig({
|
||||||
|
build: {
|
||||||
|
reportCompressedSize: false,
|
||||||
|
chunkSizeWarningLimit: 1000,
|
||||||
|
rollupOptions: {
|
||||||
|
output: {
|
||||||
|
manualChunks: undefined // Desabilita chunk splitting
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 TESTE LOCAL ANTES DE FAZER DEPLOY
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Limpar cache
|
||||||
|
npm run clean
|
||||||
|
rm -rf node_modules
|
||||||
|
rm package-lock.json
|
||||||
|
|
||||||
|
# 2. Reinstalar dependências
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# 3. Testar build
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# 4. Testar preview
|
||||||
|
npm run preview
|
||||||
|
```
|
||||||
|
|
||||||
|
Se funcionar local, deve funcionar na Vercel!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 CHECKLIST DE VERIFICAÇÃO
|
||||||
|
|
||||||
|
- [ ] Build funciona localmente (`npm run build`)
|
||||||
|
- [ ] Todas as dependências estão no `package.json`
|
||||||
|
- [ ] Variáveis de ambiente configuradas na Vercel
|
||||||
|
- [ ] Node version compatível (v18 ou v20)
|
||||||
|
- [ ] Sem imports de arquivos que não existem
|
||||||
|
- [ ] Sem erros de TypeScript críticos
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 COMO VER O LOG DE ERRO NA VERCEL
|
||||||
|
|
||||||
|
1. Acesse: https://vercel.com/dashboard
|
||||||
|
2. Clique no projeto
|
||||||
|
3. Vá em **"Deployments"**
|
||||||
|
4. Clique no deploy que falhou
|
||||||
|
5. Role até a seção **"Build Logs"**
|
||||||
|
6. Copie a mensagem de erro completa
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 SOLUÇÃO RÁPIDA - BUILD SIMPLIFICADO
|
||||||
|
|
||||||
|
Se nada funcionar, crie um `vercel.json` simplificado:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"buildCommand": "npm install && npm run build",
|
||||||
|
"outputDirectory": "dist",
|
||||||
|
"framework": "vite",
|
||||||
|
"installCommand": "npm install",
|
||||||
|
"rewrites": [
|
||||||
|
{
|
||||||
|
"source": "/(.*)",
|
||||||
|
"destination": "/index.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 AINDA NÃO FUNCIONA?
|
||||||
|
|
||||||
|
Me envie:
|
||||||
|
1. Print do log de erro completo da Vercel
|
||||||
|
2. Resultado de `npm run build` no seu terminal local
|
||||||
|
3. Versão do Node que você está usando: `node -v`
|
||||||
|
|
||||||
38
vercel.json
38
vercel.json
@@ -2,47 +2,11 @@
|
|||||||
"buildCommand": "npm run build",
|
"buildCommand": "npm run build",
|
||||||
"outputDirectory": "dist",
|
"outputDirectory": "dist",
|
||||||
"framework": "vite",
|
"framework": "vite",
|
||||||
|
"installCommand": "npm ci",
|
||||||
"rewrites": [
|
"rewrites": [
|
||||||
{
|
{
|
||||||
"source": "/(.*)",
|
"source": "/(.*)",
|
||||||
"destination": "/index.html"
|
"destination": "/index.html"
|
||||||
}
|
}
|
||||||
],
|
|
||||||
"headers": [
|
|
||||||
{
|
|
||||||
"source": "/service-worker.js",
|
|
||||||
"headers": [
|
|
||||||
{
|
|
||||||
"key": "Cache-Control",
|
|
||||||
"value": "public, max-age=0, must-revalidate"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source": "/(.*\\.(js|css|png|jpg|jpeg|gif|ico|svg))$",
|
|
||||||
"headers": [
|
|
||||||
{
|
|
||||||
"key": "Cache-Control",
|
|
||||||
"value": "public, max-age=31536000, immutable"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source": "/(.*)",
|
|
||||||
"headers": [
|
|
||||||
{
|
|
||||||
"key": "X-Content-Type-Options",
|
|
||||||
"value": "nosniff"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "X-Frame-Options",
|
|
||||||
"value": "DENY"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "X-XSS-Protection",
|
|
||||||
"value": "1; mode=block"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user