Troubleshooting
Troubleshooting
Problemas Comuns
Prisma: "The datasource property 'url' is no longer supported"
Causa: Prisma 7 não aceita url nos arquivos .prisma.
Solução: Remover url do schema e colocar no config:
// schema.prisma - SEM url
datasource db {
provider = "postgresql"
// NÃO colocar url aqui
}
// prisma.config.ts - COM url
export default defineConfig({
datasource: { url: env('DATABASE_URL') },
})
Prisma: "The datasource.url property is required"
Causa: Usando --schema ao invés de --config para migrações.
Solução:
# ERRADO
bunx prisma migrate deploy --schema=./prisma/schema-stcall.prisma
# CORRETO
bunx prisma migrate deploy --config=./prisma.config.ts
Prisma: "Cannot find module '@prisma/client/config'"
Causa: Importando defineConfig do pacote errado.
Solução:
// ERRADO
import { defineConfig } from '@prisma/client/config'
// CORRETO
import { defineConfig, env } from 'prisma/config'
Prisma: "Using engine type 'client' requires adapter"
Causa: Prisma 7 exige adaptador no construtor.
Solução:
// ERRADO
const prisma = new PrismaClient()
// CORRETO
const pool = new pg.Pool({ connectionString })
const adapter = new PrismaPg(pool)
const prisma = new PrismaClient({ adapter })
Prisma: "Cannot find module '.prisma/client-stcall'"
Causa: Clientes Prisma não gerados.
Solução:
bunx prisma generate --schema=./prisma/schema-stcall.prisma
bunx prisma generate --schema=./prisma/schema.prisma
Se usando Docker, rebuild a imagem:
docker compose build ws-container
HMR não funciona no Docker
Causa: File watching não funciona em volumes Docker no Windows/macOS.
Solução: Verificar CHOKIDAR_USEPOLLING=true no .env e a config do Vite:
// nuxt.config.ts
vite: {
server: {
watch: { usePolling: true }
}
}
Porta já em uso
Solução:
# Listar processos nas portas
lsof -i :3000
lsof -i :3001
# Ou parar containers Docker
docker compose down
WebSocket não conecta
Verificações:
- Container stcall-ws está rodando:
docker ps - Health check:
curl http://localhost:3001/health - JWT_SECRET é idêntico no frontend e WS server
- Token não expirado
WebRTC não registra
Verificações:
- Asterisk WSS porta 8089 acessível
- Certificado SSL válido
- Transporte WSS ativo:
pjsip show transports - Endpoint existe:
pjsip show endpoints - Credenciais corretas
Sem áudio na chamada
Verificações:
- Permissão de microfone concedida no navegador
- Portas UDP 10000-20000 abertas no firewall
- Servidor STUN/TURN configurado
- Verificar logs do Asterisk para erros de mídia
remoteStreamanexado ao elemento<audio>
Áudio unidirecional
Causa mais comum: NAT simétrico sem TURN server.
Solução:
- Configurar servidor TURN
- Verificar
external_media_addressno PJSIP - Verificar range de portas RTP aberto
Componente PrimeVue não renderiza
Causa: Usando prefixo p- no nome do componente.
Solução: Usar PascalCase sem prefixo:
<!-- ERRADO -->
<p-button />
<!-- CORRETO -->
<Button />
Dark Mode toggle dessincronizado
Bug conhecido: O indicador do InputSwitch pode não acompanhar a mudança visual.
Workaround: Clicar no toggle novamente para ressincronizar.
Import duplicado de composable
Causa: Criou composables/index.ts barrel export.
Solução: Deletar composables/index.ts. O Nuxt auto-importa composables automaticamente.
Logs Úteis
Docker
docker compose logs -f --tail=100 # Últimas 100 linhas + follow
docker logs stcall-ws # Logs de um container específico
Asterisk
asterisk -rvvv # Console interativo
asterisk -rx "core show channels" # Canais ativos
asterisk -rx "pjsip show contacts" # Contatos registrados
Navegador
- Abrir DevTools (F12)
- Console: erros de WebSocket e WebRTC
- Network: verificar conexão WebSocket
chrome://webrtc-internals/- Estatísticas WebRTC detalhadas