1

我正在 Symfony 4 中开发一个需要 FOSJSrouting 捆绑包的页面。在我的 DEV 环境中 - 使用 docker - 我使用以下步骤让它正常工作。

但是,在我的产品环境中,我不断收到错误消息:

- http://url/js/routing?callback=fos.Router.setData 500 (Internal Server Error)
- router.min.js:1 Uncaught Error: The route "get_coinTicker_from_platform" does not exist.

我让它在 DEV 中工作的步骤:

  • $ composer require friendsofsymfony/jsrouting-bundle
    
  • 将以下内容添加到routes.yaml

    fos_js_routing:
    resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
    
  • 将以下内容添加到我的 base.html.twig

    <script src="{{ asset('bundles/fosjsrouting/js/router.min.js') }}"></script>
    <script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
    

这足以让我暴露的路线工作:

/**
 * @Route("/ticker/{coin}/{plat}", name="get_coinTicker_from_platform", options={"expose"=true})
 */

然后在我的 JavaScript 中我做了:

$.ajax({
method: 'POST',
url: Routing.generate('get_coinTicker_from_platform', {coin: coin.val(), plat: exch.val()})
}).done(function(data) {
$('.loader').hide();
}
});

我在我的 Linux 服务器上使用 composer 安装了路由包,甚至尝试了文档中包含的步骤来发布资产以及转储路由,如下所示:

bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json

我检查了 symfony 和 Apache 日志。那里没有任何关于这个问题的暗示。其他一切都运行良好,只是 FOSrouting 造成了麻烦。另外,我试过:

npm install fos-routing --save

这实际上暂时解决了这个问题,但是第二天,在我从本地存储库进行了另一个 rsync 之后,它又被破坏了。

4

3 回答 3

3

我遇到了同样的问题,并通过rwxrwxrwx在文件夹上授予权限来解决var/cache/prod

于 2019-06-20T09:43:15.330 回答
1

我参加聚会有点晚了,但无论如何让我们开始吧。

我认为您的问题 - 正如@Samiul Amin Shanto所暗示的那样,来自缓存的内容,这些内容在转储路线之前没有被清除。

在 prod 环境中,symfony 缓存路由器。因此,例如,如果您不擦除缓存并使用控制器中的新操作更新代码,它们将根本不可用,因为路由尚未引用它们。

希望您以某种方式设法找到了这一点,因为在某些时候您确实运行了cache:clear --env=prod 所以我只是在此处为可能遇到此问题的任何其他互联网用户提供此响应。

小心。

于 2020-02-28T09:01:10.827 回答
0

以防万一有人遇到同样的问题,我也花了大约 2 个小时,实际问题是对varsymfony 项目中文件夹的正确权限。只需参考 symfony 官方文档以获得正确的权限

于 2020-10-21T16:39:54.183 回答