我目前在Laravel应用程序中使用Algolia作为我的搜索引擎,所以无论何时创建记录,它都会被发送到Agolia数据库。当然,我想将我在Algolia数据库中的数据与本地开发的测试集和实时网站的生产集分开。我已经定义了我的Algolia数据库的哪些索引在JavaScript文件中使用。
现在我想知道如何根据我当前的环境相应地对我的APP_ENV变量做出反应来改变它?显然我需要在我的JavaScript中将内容放入if
语句,但是如何让我的javascript正确访问.env变量?
希望有人可以帮助我。
干杯。
答案 0 :(得分:21)
您可以在视图中将env变量作为javascript字符串回显:
<script>
var name = '{{ env('NAME') }}';
alert(name);
</script>
你的.env文件看起来像这样:
NAME =亚历
答案 1 :(得分:5)
As the documentation suggest it:您现在可以通过在.env文件中的密钥前面加上env
来轻松使用MIX_
变量。
MIX_SENTRY_DSN_PUBLIC=http://example.com
在.env
文件中定义变量后,可以通过process.env
对象进行访问。
process.env.MIX_SENTRY_DSN_PUBLIC
答案 2 :(得分:1)
有很多方法。
最好的方法之一是将数据从Controller传递到视图:
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());
或者你可以使用Sessions:
\Session::put('env', $app->environment())
当然,您可以创建专用路由并使用Ajax获取它,但我不认为这是在现实生活中的Web应用程序中执行此操作的好方法。
答案 3 :(得分:1)
更简洁的解决方案是使用laracasts/utilities
包将变量发送到您的文件。
使用composer require laracasts/utilities
命令安装它。
然后在控制器顶部添加use JavaScript;
。
最后以这种方式发送您的变量:JavaScript::put([ 'foo' => $bar ]);
。
答案 4 :(得分:0)
如果从主js文件外部访问env var。您可以执行以下操作:
let mix = require('laravel-mix');
require('dotenv').config();
然后:
let my_env_var = process.env.MY_ENV_VAR;
需要混合和dotenv配置可让您访问。 :)