React-rails gem использует webpacker
, поэтому я следовал бы за их документацией, чтобы убедиться, что вы правильно указали переменные окружения, особенно ту часть, которая касается настройки файлов dotenv, если вы не используете webpack-dev-server:
Переменные среды поддерживаются "из коробки" в Webpacker.Например, если вы запускаете сервер разработки веб-пакетов следующим образом:
FOO=hello BAR=world ./bin/webpack-dev-server
Затем вы можете ссылаться на эти переменные в своем коде приложения JavaScript с помощью process.env:
console.log(process.env.FOO) // Compiles to console.log("hello")
YouВозможно, вы захотите сохранить конфигурацию в переменных окружения через файлы .env, аналогично гему Ruby dotenv.
Вот что вы можете сделать, чтобы поддержать "Ruby-подобный" dotenv:
yarn add dotenv
// config/webpack/environment.js
...
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
const dotenv = require('dotenv')
const dotenvFiles = [
`.env.${process.env.NODE_ENV}.local`,
'.env.local',
`.env.${process.env.NODE_ENV}`,
'.env'
]
dotenvFiles.forEach((dotenvFile) => {
dotenv.config({ path: dotenvFile, silent: true })
})
environment.plugins.prepend('Environment', new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(process.env))))
module.exports = environment
Если вы хотите передать пользовательские переменные компилятору по требованию, используйте атрибут Webpacker::Compiler.env
.
Webpacker::Compiler.env['FRONTEND_API_KEY'] = 'your_secret_key'