如何在javascript中访问laravel .env变量?

Ste*_*n-v 13 javascript php environment-variables laravel

我目前在laravel安装中使用algolia作为我的搜索引擎,因此无论何时创建记录,它都会被发送到agolia数据库.当然,我想在algolia数据库中分离我的数据,其中包含用于本地开发的测试集和用于实时站点的生产集.我已经定义了我的algolia数据库的哪些索引正在javascript文件中使用.

现在我想知道如何根据我当前的环境相应地对我的APP_ENV变量做出反应来改变它?很显然,我需要把东西变成一个if语句在我的JavaScript,但我怎么做我的javascript访问.ENV变量是否正确?

希望有人可以帮助我.

干杯.

Agu*_*ndo 27

您可以在视图中将env变量作为javascript字符串回显:

<script>

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

alert(name);

</script>
Run Code Online (Sandbox Code Playgroud)

你的.env文件看起来像这样:

NAME =亚历克斯


Tim*_*rce 8

正如文档所建议的那样:现在,您可以env通过在.env文件中的键前面加上前缀来轻松使用变量MIX_

MIX_SENTRY_DSN_PUBLIC=http://example.com

.env文件中定义变量后,您可以通过process.env对象进行访问。

process.env.MIX_SENTRY_DSN_PUBLIC

  • 它也可以与带有“ {{env('MIX_SENTRY_DSN_PUBLIC')}}”的普通刀片模板一起使用。 (2认同)
  • 你甚至可以在 .env 文件中使用扩展变量,如 ```MIX_APP_ENV=${APP_ENV}``` 并在 js 中使用 ```process.env.MIX_APP_ENV``` 访问它,这样你就不必编写变量两次 (2认同)
  • 这是最正确的答案。更改或添加变量后记得重新启动编译任务 (2认同)

sim*_*w16 7

如果从主 js 文件之外访问环境变量。您可以执行以下操作:

let mix = require('laravel-mix');
require('dotenv').config();
Run Code Online (Sandbox Code Playgroud)

然后:

let my_env_var = process.env.MY_ENV_VAR;
Run Code Online (Sandbox Code Playgroud)

需要 mix 和 dotenv 配置才能访问。:)