Недавно я настроил FullCalendar v3 с моим проектом Drupal 8, он отлично работает, и все функции применяются.
Проблема связана с JQUERY 3.3.1, который я импортировал как конфигурацию с FullCalendar.
Когда я игнорирую этот Jquery для загрузки, проблема будет решена, но FullCalendar больше не будет работать.
Я получил эти ошибки:
Uncaught TypeError: $(...).once is not a function
Uncaught TypeError: Cannot set property 'Bridge' of undefined
Uncaught TypeError: $(...).find(...).once is not a function
Я ищу эти ошибки и пробую лучший результат совпадения, но еще не исправлен. Я перехожу на другой jquery, активирую основную тему вместо подтемы, но не получаю результата.
Это моя библиотека модулей.yml
amt_scripts:
version: 1.x
css:
theme:
assets/css/bootstrap.min.css: {}
assets/css/fullcalendar.css: {}
assets/css/amt_dayview.css: {}
js:
# assets/js/jquery-1.9.1.js: {}
assets/js/jquery.min.js: {}
assets/js/jquery-ui.min.js: {}
assets/js/bootstrap.min.js: {}
assets/js/moment.min.js: {}
assets/js/fullcalendar.min.js: {}
assets/js/scheduler.min.js: {}
assets/js/popper.min.js: {}
assets/js/amt_dayview.js: {}
dependencies:
Да, я упомянул, что проверяю большинство из них, например, меняю версию Jquery, удаляю ее, но не работаю.
Большинство ответов, которые я читал, говорили о проблемах с файлом темы начальной загрузки, а не о jQuery. .once() не является основным методом jQuery.
Я не согласен, я просто перехожу на тему drupal, такую как Batrik, и проблема возникает и с ней, вы можете увидеть изображение результата в вопросе, который я добавил сейчас. @ADyson
Ну, это все еще факт, что .once() не является основным методом jQuery или чем-то связанным с fullCalendar. Это что-то связанное с Drupal. Ваша проблема не была (напрямую) вызвана установкой fullCalendar, а скорее тем, от чего она зависит. Судя по sqndr.github.io/d8-theming-guide/javascript/behaviors.html, вам нужно убедиться, что у вас есть ссылка на файл, связанный с Drupal, чтобы он работал.



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


Вы добавили зависимости, такие как
dependencies:
- core/jquery
- core/drupal.ajax
- core/drupal
- core/drupalSettings
- core/jquery.once
Да, я нашел это и исправил проблему, добавив зависимость, но не только это. Я меняю свой хук вложения, который загружает это, на хук страницы вложения.
В любом случае вы можете добавить его в библиотеки и подключить библиотеку или использовать хук.
Я использую такие зависимости и добавляю jquery из ядра Drupal.
amt_scripts:
version: 1.x
css:
theme:
assets/css/fullcalendar.css: {}
js:
assets/js/popper.min.js: {}
assets/js/bootstrap.min.js: {}
assets/js/moment.min.js: {}
assets/js/fullcalendar.min.js: {}
assets/js/scheduler.min.js: {}
assets/js/amt_dayview.js: {}
dependencies:
- core/jquery
- core/jquery-ui
но этот подход будет работать с hook_page_attachments для добавления библиотеки:
ПРОБЛЕМА этот метод добавит библиотеку на всю страницу, но я хочу, чтобы она была на определенной странице, которую необходимо проверить с текущим путем.
/**
* Implemets hook_page_attachments().
*/
function amt_dayview_page_attachments(array &$attachments) {
// Attach dayview Script just working fine with this hook.
// But it is need to load just for dayview page.
if (\Drupal::service('path.current')->getPath() == '/day-view') {
// Unconditionally attach an asset to the page.
$attachments['#attached']['library'][] = 'amt_dayview/amt_scripts';
}
}
Я не вижу, чтобы это имело какое-либо отношение к fullCalendar напрямую: google.com/… . Вы изучали какой-либо из множества существующих ресурсов, обсуждающих эту ошибку?