Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问javascript中的laravel.env变量?_Javascript_Php_Laravel_Environment Variables - Fatal编程技术网

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

如何访问javascript中的laravel.env变量?,javascript,php,laravel,environment-variables,Javascript,Php,Laravel,Environment Variables,我目前在Laravel应用程序中使用Algolia作为搜索引擎,因此每当创建记录时,它也会被发送到Agolia数据库。当然,我想用本地开发的测试集和实时网站的生产集来分离Algolia数据库中的数据。我已经定义了在JavaScript文件中使用Algolia数据库的哪些索引 现在我想知道如何根据我当前的环境对APP_ENV变量做出相应的反应来更改它?显然,我需要在JavaScript中将内容放入if语句中,但是如何使JavaScript正确地访问.env变量呢 希望有人能帮我 干杯。有很多方法

我目前在Laravel应用程序中使用Algolia作为搜索引擎,因此每当创建记录时,它也会被发送到Agolia数据库。当然,我想用本地开发的测试集和实时网站的生产集来分离Algolia数据库中的数据。我已经定义了在JavaScript文件中使用Algolia数据库的哪些索引

现在我想知道如何根据我当前的环境对APP_ENV变量做出相应的反应来更改它?显然,我需要在JavaScript中将内容放入
if
语句中,但是如何使JavaScript正确地访问.env变量呢

希望有人能帮我


干杯。

有很多方法

最好的方法之一是将数据从控制器传递到视图:

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>

}
或者您可以使用会话:

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

当然,您可以创建专用路由并使用Ajax获得它,但我认为在现实的web应用程序中这不是一个好方法。

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

<script>

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

alert(name);

</script>

var name='{{env('name')}}';
警报(名称);
您的.env文件如下所示:

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

NAME=Alex

更干净的解决方案是使用
laracasts/utilities
包将变量发送到文件中

使用
composer require laracast/utilities
命令安装它

然后添加
使用JavaScript位于控制器顶部

最后以这种方式发送变量:
JavaScript::put(['foo'=>$bar])

:您可以使用
env
变量,方法是在
.env
文件中使用
MIX.
作为前缀

e、 g:
MIX\u SENTRY\u DSN\u PUBLIC=http://example.com

.env
文件中定义变量后,可以使用
process.env
对象从javascript文件访问该变量


e、 g:
process.env.MIX\u SENTRY\u DSN\u PUBLIC

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

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


需要mix和dotenv配置,您可以访问:

您可以创建一个restful资源来获取环境变量。然后向它发送一个ajax请求。请注意,允许访问环境变量,而不必列出什么是允许的,什么是不允许的。会很危险。。。因为大多数人都有数据库和电子邮件服务器的登录,这和我现在所做的差不多。我只是希望有一个更好的或预先制定的方法,因为我认为很多人可能会遇到这种情况,你需要用javascript检查你的环境。谢谢你的帮助!它在js中给出语法错误。只有在您使用vue组件时才是这样。如果您只是使用普通刀片模板,这是不准确的。它也适用于带有
{{env('MIX\u SENTRY\u DSN\u PUBLIC')}
的普通刀片模板。只需要mix和dotenv配置文件。然后它会得出这样一个框:)任何脚本都可以通过这种方式访问环境变量。您甚至可以在.ENV文件中使用扩展变量,如
MIX\u APP\u ENV=${APP\u ENV}
,并在js中使用
process.ENV.MIX\u APP\u ENV
访问它,这样您就不必再编写变量了。这是最正确的答案。请记住在更改或添加变量后重新启动编译任务
let my_env_var = process.env.MY_ENV_VAR;