Ich habe vor kurzem eine React/Express App zu Heroku bereitgestellt, aber ich habe ein Problem mit Umgebungsvariablen, die Teil der gebauten App und der Heroku Deployment-Pipeline sind - in einem Kurz gesagt, die Werte der Umgebungsvariablen aus der App staging
Release werden übertragen, wenn die Förderung zu production
- die einzige Möglichkeit, dass ich die Umgebungsvariablen richtig setzen kann, ist die App direkt auf production
zu schieben, die den Zweck der wirklich besiegt Bereitstellungs-Pipeline an erster Stelle. Hier ist eine Zusammenfassung des Szenarios:Heroku Pipeline - Staging env Variable in die Produktion
Die Umgebungsvariable in Frage API_URL
, die in webpack.config.js
wie so verwiesen wird:
plugins: [
new webpack.DefinePlugin({
'API_URL': JSON.stringify(process.env.API_URL || 'http://localhost:4000/api/v1')
})
]
Die API ist selbst eine andere Heroku App mit staging
und production
Mitteilungen und so die Werte der API_URL
Umgebungsvariable werden in meiner React app Heroku-Konfiguration als https://staging-api-12345.herokuapp.com/api/v1
bzw. https://production-api-12345.herokuapp.com/api/v1
festgelegt.
Wenn ich schiebe meine app Reagieren auf staging
up, es funktioniert perfekt - aber wenn ich die App production
und machen den ersten Aufruf der API zu fördern, ist es noch zeigt auf https://staging-api-12345.herokuapp.com/api/v1
. Ok gut, ich verstehe, warum das der Fall ist - die App wurde gebaut, wenn sie an staging
geschoben wird ... so versuchte ich, die App nach Förderung auf production
neu aufzubauen, aber das hat nicht funktioniert, es verwendete immer noch die staging
Umgebungsvariablen.
Gibt es bei Verwendung der Heroku-Bereitstellungspipeline eine Möglichkeit, den App-Slug neu zu erstellen, sodass er die verschiedenen Umgebungsvariablen abfängt?
Große, vielen Dank für diesen Vorschlag in anderen Dateien benötigen. – skwidbreth
Wie wäre es nur mit einer statischen App, die Express nicht verwendet? – morrislaptop
Was ist dein Setup genau? Ich glaube, Sie können den gleichen Ansatz verwenden. Alles, was Sie tun müssen, ist sicherzustellen, dass Sie ENV zur Laufzeit holen und nicht während des Build-Prozesses. –