2016-06-22 8 views
12

Wie kann ich Umgebungsvariablen verwenden, die in .bash_profile in einer React-Anwendung definiert sind? Ich habe zwei React-Apps in der Produktion (sie sind das gleiche Projekt, also haben sie den gleichen Code), aber sie müssen an verschiedene API-Hosts anfordern, und ich dachte, env-Variablen könnten den Trick machen.Reagieren: Umgebungsvariablen verwenden

+2

hast du _anything_ probiert? –

+1

Verwenden Sie eine Art Modulbündler? Webpack? browserisieren? – topheman

+0

Sie geben nicht an, was Sie verwenden, aber normalerweise geschieht dies serverseitig, da ich bezweifle, dass JS Umgebungsvariablen lesen kann. Im Knoten können Sie 'process.env.API_HOST' eingeben. – eblin

Antwort

21

Verwenden Sie webpack.DefinePlugin. Sagen Sie bitte exportiert FOO und BAR in Ihrem .bash_profile, dann sollten Sie Ihre webpackconfig wie folgt aussehen:

const config = { 
    entry: 'somescript', 
    // ... 
    module: { 
    // ... 
    }, 
    // ... 
    plugins: [ 
    // ... your plugins 
    new webpack.DefinePlugin({ 
     'process.env':{ 
     'FOO': process.env.FOO, 
     'BAR': process.env.BAR 
     } 
    }) 
    ], 
    // ... 
} 

Sie der Lage, über process.env.FOO & process.env.BAR

Ressourcen die in Ihrem js bei der Kompilierung zuzugreifen: https://github.com/topheman/webpack-babel-starter

+0

Wie Sie gesagt haben, wird es nur zur Build-Zeit funktionieren. @sauronnikko sagte, dass er zwei Projekte mit dem gleichen Code hat. Entsprechend Ihrer Lösung wird er zwei verschiedene Anwendungen haben, d. H. Mit unterschiedlichen Code. –

+0

lesen Sie einfach einen Kommentar zum Ticket und es scheint, was sie brauchen. Tut mir leid, Mann. –

+0

@MikhailChibel Ja, tut mir leid, die Frage war nicht klar. Ich wollte, dass die Variablen zur Build-Zeit funktionieren – sauronnikko

Verwandte Themen