Çözüldü İki uygulama tek serverless platformda nasıl çalıştırılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

kaan_js

Hectopat
Katılım
27 Aralık 2019
Mesajlar
204
Daha fazla  
Cinsiyet
Erkek
Merhaba,

Bir serverless platformda (Vercel, Netlify, Heroku...) hem frontend hem de backend uygulamayı aynı domain üzerinde çalıştırmak istiyorum.

package.json dosyamda şunu denedim:
"serve": "vue-cli-service serve && cd api && npm run start"
(API klasörüm root dosyamın içinde ./api/ olarak bulunmakta.)

Fakat Vue.js uygulamam serve edildiği için ardından server doğal olarak farklı bir komut kabul etmiyor.

Aynı anda iki command line çalıştırma ihtimalim var mı? (Vercel, Heroku, Netlify gibi platformlardan bahsediyorum.)
Ya da başka bir çözüm tekniği mi var?

Serverless uygulama geliştirmiş arkadaşlar yardım ederse çok sevinirim, şimdiden teşekkürler.
 
Çözüm
Evet. Express uygulaman üzerinden sunmalısın Vue uygulamanı. sendFile() metodu ile HTML dosyanı göndermelisin (Vue uygulamanı production içinbuild etmelisin).

Örneğin; / route'una istek geldiğinde HTML gönderirsin, /api route'unda da API route'ların devreye girer.
Vue uygulamanı derleyip, Express.js'in res.sendFile() metodu ile sunmalısın. Heroku kullanacaksan eğer, package.json dosyanda start script'i olmalı ve Express uygulamana sabit port vermemelisin, yani process'den almalı.

Genel olarak şunu demek istiyorum; hem Vue, hem de Express uygulamanı ayrı ayrı projeler olarak başlatmamalısın. Vue uygulamanı (yani HTML dosyanı göndermelisin, zaten HTML içerisinde Vue uygulamasının oluşturduğu JavaScript dosya referansları olacaktır) Express uygulaman üzerinden kullanıcıya göndermelisin.
 
Vue uygulamanı derleyip, Express.js'in res.sendFile() metodu ile sunmalısın. Heroku kullanacaksan eğer, package.json dosyanda start script'i olmalı ve Express uygulamana sabit port vermemelisin, yani process'den almalı.

Genel olarak şunu demek istiyorum; hem Vue, hem de Express uygulamanı ayrı ayrı projeler olarak başlatmamalısın. Vue uygulamanı (yani HTML dosyanı göndermelisin, zaten HTML içerisinde Vue uygulamasının oluşturduğu JavaScript dosya referansları olacaktır) Express uygulaman üzerinden kullanıcıya göndermelisin.

Öncelikle cevabın için teşekkür ederim. Benim aklıma takılan sorular şu şekilde:

Statik bir çıktı alıp ondan sonra mı Node.js başlatmalıyım?

Vue production modda bir index.html çıktısı veriyor ve bunu direk olarak sunuyor diyorsunuz sanırsam.

O halde yapıcak arkadaşlara şöyle bir adım listesi oluşturmak doğru mu oluyor?

  1. API ve Vue.js uygulamasını ayrı portlarda geliştirme yap.
  2. Serverless herhangi bir platformda işleme alırken API ile express.static('./app/<build klasörü>') fonksiyonunu kullanarak uygulamamızı API üzerinden serve et.
Bu şekilde değil mi?
 
Evet. Express uygulaman üzerinden sunmalısın Vue uygulamanı. sendFile() metodu ile HTML dosyanı göndermelisin (Vue uygulamanı production içinbuild etmelisin).

Örneğin; / route'una istek geldiğinde HTML gönderirsin, /api route'unda da API route'ların devreye girer.

Gayet yardımcı oldun buna yardımcı bir script yazmam gerekiyor herhalde production'a geçerken çalıştırması için başka bir şey yok zaten👍👍
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı