Как получить доступ к переменным larvel.env внутри javascript?

В настоящее время я использую Algolia для своей поисковой системы в приложении Laravel, поэтому при создании записи она также отправляется в базу данных Agolia. Конечно, я хочу разделить свои данные в базе данных Algolia с набором тестов для локальной разработки и производственным набором для живого веб-сайта. Я определил, какие индексы моей базы данных Algolia используются в файле JavaScript.

Теперь мне интересно, как я реагирую соответственно на мою переменную APP_ENV, чтобы изменить ее в зависимости от моей текущей среды? Очевидно, что мне нужно поместить вещи в оператор if в моем JavaScript, но как мне сделать, чтобы мой JavaScript правильно обращался к переменным .env?

Надеюсь, кто-нибудь может мне помочь.

Приветствия.

Ответ 1

Вы можете просто отобразить переменную env как строку javascript в вашем представлении:

<script>

var name = '{{ env('NAME') }}';

alert(name);

</script>

И ваш .ENV файл будет выглядеть так:

NAME = Алекс

Ответ 2

Как видно из документации: теперь вы можете легко использовать переменные env, добавив префикс ключа в вашем файле MIX_ с помощью MIX_.

MIX_SENTRY_DSN_PUBLIC=http://example.com

После того, как переменная была определена в вашем файле .env, вы можете получить доступ через объект process.env.

process.env.MIX_SENTRY_DSN_PUBLIC

Ответ 3

Есть много способов.

Одним из лучших является передача данных с контроллера на представление:

if ($app->environment('local'))
{
    // Here you can generate some <script></script> code or you could just generate
    // hidden div like <div id="environment" style="display:none">local</div>

}

или вот так:

return view('myView')->with('env', $app->environment());

Или вы можете использовать Session:

\Session::put('env', $app->environment())

Конечно, вы можете создать выделенный маршрут и получить его с помощью Ajax, но я не думаю, что это хороший способ сделать это в реальном веб-приложении.

Ответ 4

Более чистым решением является использование пакета laracasts/utilities для отправки ваших переменных в ваш файл.

Установите его с помощью команды composer require laracasts/utilities.

Затем добавьте use JavaScript; в верхнюю часть вашего контроллера.

И, наконец, отправьте свою переменную следующим образом: JavaScript::put([ 'foo' => $bar ]);.

Ответ 5

При доступе к env vars вне основного файла js. Вы можете сделать следующее:

let mix = require('laravel-mix');
require('dotenv').config();

затем:

let my_env_var = process.env.MY_ENV_VAR;

Требуется микс и конфиг dotenv дает вам доступ. :)