2016-06-22 8 views
12

Как использовать переменные среды, определенные в .bash_profile в приложении React? У меня есть два приложения React на производстве (они - один и тот же проект, поэтому у них одинаковый код), но им нужно запросить разные хосты API, и я решил, что переменные env могут сделать трюк.React: Использовать переменные среды

+2

вы пробовали _anything_? –

+1

Используете ли вы какой-то модуль-модуль? webpack? браунировать? – topheman

+0

Вы не указываете, что используете, но обычно это делается на стороне сервера, поскольку я сомневаюсь, что JS может читать любые переменные среды. В узле вы можете сделать 'process.env.API_HOST' – eblin

ответ

21

Использование webpack.DefinePlugin. Допустим, вы экспортировали FOO и BAR в вашем .bash_profile, то ваш webpackconfig должен выглядеть следующим образом:

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

Вы сможете получить доступ к тем, в ваших JS во время компиляции с помощью process.env.FOO & process.env.BAR

Ресурс: https://github.com/topheman/webpack-babel-starter

+0

Как вы сказали, это будет работать только во время сборки. @sauronnikko сказал, что у него есть два проекта с тем же кодом. Согласно вашему решению, у него будет два разных приложения, то есть с другим кодом. –

+0

просто прочитал комментарий к билету, и кажется, что ему нужно. Извини чувак. –

+0

@MikhailChibel Да, извините, вопрос не ясен. Я хотел, чтобы переменные работали во время сборки – sauronnikko

Смежные вопросы