Symfony 4和FOSJsRoutingBundle在开发环境中正常,但在生产环境中为KO(未定义路由)

时间:2019-04-03 07:46:23

标签: javascript php symfony symfony4 webpack-encore

从symfony 4开始,我使用bundle jsrouting从JS代码获取symfony路由路径。 在dev环境中一切正常,但是当我将symfony配置设置为prod mod时,当我加载其中我的一个JavaScript脚本使用jsrouting的页面时,会出现此错误:

enter image description here

(我的页面使用的自定义javascript文件global.js中发生错误)

我的树枝文件包含以下内容:

<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
<script src="{{ asset('build/js/us/builder/global.js') }}"></script>
  • 我在.env文件中将变量APP_ENV设置为dev:在加载页面时,从浏览器调试器中看到:

enter image description here

  • 但是如果我在.env文件中将变量APP_ENV设置为prod:在加载页面时,从浏览器调试器中看到:

enter image description here

我不明白为什么进入prod模式时会出现这两行:

<script src="/*****/public/bundles/fosjsrouting/js/router.js"></script>
<script src="/*****/public/js/routing?callback=fos.Router.setData"></script>

丢失了...这就是为什么我收到错误“ Routing not defined”的原因,因为在router.js文件中定义了“ Routing”。

我不明白为什么Symfony在prod环境中会丢失这些行

我的配置文件/myproject/config/bundles.php的内容:

<?php

return [
    //...
    FOS\JsRoutingBundle\FOSJsRoutingBundle::class => ['all' => true],
];

编辑:某些控制台命令的输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

仔细查看您的var目录,子目录权限和所有者。

php bin/console cache:pool:clear cache.global_clearer
chmod -R 777 var/log

为产品目录输入正确的所有者:

cache/prod