Я разрабатываю страницу в Symfony 4, для которой требуется пакет FOSJSrouting. В моей среде DEV - с помощью докера - я получил все нормально, выполнив следующие шаги.
Однако в моей производственной среде я продолжаю получать ошибки:
- 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();
}
});
Я установил пакет маршрутизации с помощью composer на свой сервер Linux и даже попробовал шаги, включенные в документацию, для публикации ресурсов, а также маршрутов дампа, например:
bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json
Я проверил логи Symfony и Apache. Там ничего не намекает на эту проблему. Все остальное работает нормально, только FOSrouting вызывает проблемы. Также я пробовал:
npm install fos-routing --save
Это на самом деле временно решило проблему, но на следующий день, после того как я сделал еще один rsync из моего локального репозитория, он снова сломался.
Я проверил оба журнала apache, а также журнал в каталоге var / log / prod.log. Prod.log ничего не перечисляет. Журналы Apache также не намекают ни на что связанное с этим ...
Я думаю, вы пропустили установку актива, попробуйте установить актив, затем запустите fos: js-routing dump, затем включите в базовый html файл web / bundles / fosjsrouting / js / router.js и web / js / fos_js_routes.js.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У меня была такая же проблема, и она была решена путем добавления правильного rwxrwxrwx в папку var/cache/prod.
Я немного опоздал на вечеринку, но в любом случае давайте перейдем к делу.
Я думаю, что ваша проблема - как намекает @Samiul Амин Шанто, исходит из кешированного содержимого, которое не стирается перед сбросом маршрутов.
В среде prod symfony кэширует маршрутизатор. Так что если не протирать кеш и обновите свой код новыми действиями в вашем контроллере, например, они не будут будут вообще доступны, потому что маршрут еще не ссылается на них.
Надеюсь, вам как-то удалось это выяснить, потому что в какой-то момент вы действительно запускали кеш: очистить --env = prod Поэтому я просто отправляю этот ответ для любого другого пользователя Интернета, который может столкнуться с этим вопросом.
Заботиться.
На случай, если у кого-то возникнет такая же проблема, я также потратил на это около 2 часов, реальная проблема - это правильное разрешение для папки var внутри вашего проекта Symfony. Просто обратитесь к официальной документации Symfony, чтобы дать правильное разрешение здесь!
Вы должны проверить свои журналы Symfony.