Vercel + nodeJs
É possivel fazer deploy de uma aplicação nodeJs que tem um DB sqlite junto na vercel? Se sim, como?
É possivel fazer deploy de uma aplicação nodeJs que tem um DB sqlite junto na vercel? Se sim, como?
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');
Estou tentando algo parecido sem sucesso.
Fiz fork de um projeto de IA para classificação de imagens, ele roda com Meteor. Tentei subir na Vercel, de primeira deu erro 404. Então incluí um arquivo vercel.json para dar build com npm start, agora dá erro dizendo que não está instalado o meteor.
Se alguém puder ajudar, agradeço.
Até onde eu sei na Vercel não dá não.
No zcloud.ws a gente fez uma docker image com Meteor e MongoDB.
Dá pra fazer uma assim com sqlite.
Se precisar de ajuda manda pra [email protected] que a gente te ajuda.
Aí colocamos até de exemplo no nosso site e repo. Seria um exemplo massa.