Preciso de um auxílio com um problema em um projeto Angular + Node.js hospedado no Vercel
Olá olá! 👋 Gostaria de fazer uma pergunta que creio ter a ver mais com hospedagem do que código.
Tenho um site desenvolvido com Angular e Node.js, ambos hospedados na Vercel. Meu frontend consome uma API Node.js que inclui um endpoint POST para enviar um e-mail.
- Tudo funciona perfeitamente em localhost.
- Após o deploy na Vercel, a requisição POST falha com "405 Method Not Allowed", mesmo que requisições GET funcionem normalmente.
O que já tentei até agora:
- Verifiquei as configurações de CORS (parece estar tudo certo e talvez eu nem precise pois a API e frontend estão no mesmo domínio);
- Pesquisei na documentação e fóruns da Vercel;
- Consultei chatbots (tive algumas ideias, mas nada resolveu);
- Criar e ajustar o arquivo vercel.json para incluir os Headers de requisição;
Eu estou considerando hospedar a API separadamente na Vercel, mas gostaria de saber se há uma solução melhor antes de seguir esse caminho.
o sr criou um vercel.json? não uso mais a vercel, porém, talvez seja necessário configurar um desse para permitir o acesso a métodos serverless. senão, a vercel vai entender que a aplicação node é estática. exemplo de vercel.json:
{
"rewrites": [
{ "source": "/api/(.*)", "destination": "/api/index.js" }
]
}
acima, todo endpoint /api/... vai cair em um arquivo index.js localizado na pasta /api com origem à raiz.
{
"version": 2,
"builds": [
{
"src": "api/index.ts",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/api/(.*)",
"dest": "/api/index.ts"
}
]
}
acima, para todo endpoint /api/..., toda requisição vai cair em cima da aplicação que roda no arquivo index.ts na pasta /api, desde a raiz do projeto. se não estiver numa pasta api, pode acusar que está em outro diretório, mesmo. talvez seja interessante ler a documentação, pois eu criei esse vercel.json na mão e nem o testei. eu sei que talvez seja necessário um vercel.json, pois já me ocorreu esse erro ao utilizar sveltekit. para o sveltekit, que é fullstack, só me necessitou escolher se usaria vercel.json ou um adapter nativo.
se a vercel estiver mesmo hospedando tua aplicação como arquivos estáticos, basta provar acessando algo como https://DOMINIO-VERCEL.vercel.app/api/index.ts ou algo do tipo, assim talvez consiga visualizar o arquivo estático.
Abre o inspetor de rede e vê exatamente qual requisição está falhando, se é a POST ou a OPTIONS que a precede.
Acredito que seu problema seja no seu backend que simplemente não tem uma rota definida para o POST