4 FOSJSRouting callback = fos.Router.setData & Route не найдены только в производственной среде

Я разрабатываю страницу в 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 из моего локального репозитория, он снова сломался.

Вы должны проверить свои журналы Symfony.

Iwan Wijaya 11.06.2018 13:50

Я проверил оба журнала apache, а также журнал в каталоге var / log / prod.log. Prod.log ничего не перечисляет. Журналы Apache также не намекают ни на что связанное с этим ...

Stormnorm 11.06.2018 16:10

Я думаю, вы пропустили установку актива, попробуйте установить актив, затем запустите fos: js-routing dump, затем включите в базовый html файл web / bundles / fosjsrouting / js / router.js и web / js / fos_js_routes.js.

Samiul Amin Shanto 14.06.2018 11:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
2 365
3

Ответы 3

У меня была такая же проблема, и она была решена путем добавления правильного rwxrwxrwx в папку var/cache/prod.

Я немного опоздал на вечеринку, но в любом случае давайте перейдем к делу.

Я думаю, что ваша проблема - как намекает @Samiul Амин Шанто, исходит из кешированного содержимого, которое не стирается перед сбросом маршрутов.

В среде prod symfony кэширует маршрутизатор. Так что если не протирать кеш и обновите свой код новыми действиями в вашем контроллере, например, они не будут будут вообще доступны, потому что маршрут еще не ссылается на них.

Надеюсь, вам как-то удалось это выяснить, потому что в какой-то момент вы действительно запускали кеш: очистить --env = prod Поэтому я просто отправляю этот ответ для любого другого пользователя Интернета, который может столкнуться с этим вопросом.

Заботиться.

На случай, если у кого-то возникнет такая же проблема, я также потратил на это около 2 часов, реальная проблема - это правильное разрешение для папки var внутри вашего проекта Symfony. Просто обратитесь к официальной документации Symfony, чтобы дать правильное разрешение здесь!

Другие вопросы по теме