Executando verificação de segurança...
Em resposta a Vercel + nodeJs
1

Estou tentando isso faz uns meses, a API até roda, mas dá erro, analisando os logs encontrei que algumas dependências não são instaladas ou por algum motivo não consegue ter acesso às bibliotecas que fazem o orm Sequelize funcionar, tentei até forçar o comando yarn && yarn add sqlite3 como um fake script de Builder para forçar instalar os pacortes do package.json e adicionar sqlite3 (necessário para trabalhar com sqlite) no serviço na vercel. Já tentei até usando outros BDs como o PG, mas da na mesma, a biblioteca do pg não é encontrada ou instalada. Meus próximos testes serão injetar o node_modules para tentar forçar os pacotes necessários no servidor.

Este https://vercel.com/guides/using-express-with-vercel#standalone-express é caminho oficial para publicar uma pseudo api na vercel com nodejs, estou brincando com o vercel.json para conseguir fazer funcionar.

para fazer funcionar a api precisei redirecionar as rotas para a função api, usando "rewrites" em vercel.json

"rewrites": [
    {
        "source": "/api/*",
        "destination": "/api/index.js"
    }
],

e forçando minha pasta SRC ser mantida na versão final com o "builds" que é um método depreciado segundo a documentação oficial da vercel, abaixo é roteiro que usei

"builds": [
    { "src": "database.sqlite", "use": "@vercel/static" },
    { "src": ".sequelizerc", "use": "@vercel/static" },
    { "src": "package.json", "use": "@vercel/static" },
    { "src": "/src/**/*", "use": "@vercel/static" },
    { "src": "/api/*", "use": "@vercel/node" }
]

espero que consigam encontrar a solução, estas foram as descobras que usei até aqui

na documentação também diz que é necessário que o header das respostas da "api" contenham informação de tempo de vida, talvez seja isso que está impedindo de funcionar corretamente, ou esse erro iria explodir no futuro após arrumar esse das bibliotecas

lendo a documentação encontrei um hack para colocar o header em todas as respostas

ainda no json, adicionando "headers"

"headers": [
    {
        "source": "/(.*)",
        "headers": [
            ...
        ]
    }
]

nos ... coloca as configurações de header solicitadas, na documentação, com express, cita essa aqui:

res.setHeader('Cache-Control', 's-max-age=1, stale-while-revalidate');
Carregando publicação patrocinada...