Скрипт не загружается из-за ошибки MIME типа javascript
Я пытаюсь подключить плагин jQuery Masonry на сайте. Я обновил файлы шаблона, чтобы добавить нужные классы для работы плагина. Затем я подключил скрипты следующим образом:
function masonry_scripts() {
wp_enqueue_script('masonry');
wp_enqueue_script( 'masonry-script', get_template_directory_uri() . '/assets/js/masonry-script.js', array(), false, true );
}
add_action( 'wp_enqueue_scripts', 'masonry_scripts' );
Скрипт masonry загружается правильно, но файл masonry-script.js не загружается. В консоли я получаю следующую ошибку:
Скрипт из ".../assets/js/masonry-script.js?ver=5.1.1" был загружен, хотя его MIME тип ("text/html") не является допустимым MIME типом JavaScript.[Подробнее] Загрузка не удалась для источника "http://thewallmarket.local/wp-content/themes/storefront/assets/js/masonry-script.js?ver=5.1.1".
К сожалению, я не могу предоставить ссылку на сайт, так как он разрабатывается локально.
Что вызывает эту проблему? Как я могу это решить?
Эта ошибка означает, что ресурс (в данном случае JS-файл), который вы загружаете, ожидается как JavaScript, но вместо этого является HTML. Это может быть из-за неправильного пути или потому что локальный файл не является JS.
Скорее всего, указанный вами скрипт по пути /assets/js/masonry-script.js
не является JS-файлом или не может быть загружен как таковой. Похоже, что вы получаете ошибку "Файл не найден" (с перенаправлением на 404 страницу).
Попробуйте добавить этот код между двумя строками wp_enqueue_script()
:
printf(get_template_directory_uri() . '/assets/js/masonry-script.js');
Это выведет полный путь к файлу, который вы пытаетесь загрузить. Проверьте, можете ли вы открыть этот URL в отдельной вкладке браузера. Возможно, вам нужно будет изменить URL следующим образом:
wp_enqueue_script('masonry-script', untrailingslashit(get_template_directory_uri() . '/assets/js/masonry-script.js', [], false, true);
Также проверьте содержимое локального файла, чтобы убедиться, что он действительно содержит JavaScript. Если нет, возможно, вам потребуется загрузить корректную версию.
Если требования вашего проекта позволяют и CDN доступен, вы можете рассмотреть возможность использования jQuery Masonry через CDN.
Обновление: родительская тема vs. дочерняя тема
Как указано в документации WP для get_template_directory_uri()
, если вам нужен URL дочерней темы вместо родительской, используйте get_stylesheet_directory_uri()
.

Спасибо за ваш ответ. Файл является js-файлом, и путь к нему указан правильно. Но используя ваш трюк, я понял, что выводимый путь ведет к родительской теме, а не к дочерней. А мне, конечно же, нужен доступ к дочерней теме.
Полагаю, проблема в функции get_template_uri(). Не думаю, что использование абсолютного пути к файлу будет правильным решением, но я не знаю, что делать в этой ситуации. Может быть, вы знаете, как это исправить?
