web-dev-qa-db-fra.com

Le script ne se charge pas en raison d'une erreur de type javascript MIME

J'essaie de faire fonctionner le plugin jQuery Masonry sur un site. J'ai mis à jour mes fichiers modèles pour obtenir les classes appropriées là où le plugin en a besoin. Ensuite, j'ai mis mes scripts en file d'attente comme ceci:

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' );

Le script de maçonnerie se charge correctement, mais pas le fichier masonry-script.js. J'obtiens l'erreur suivante dans la console:

Le script de ".../assets/js/masonry-script.js? Ver = 5.1.1" a été chargé même si son type MIME ("text/html") n'est pas un type MIME JavaScript valide. [En savoir plus] Le chargement a échoué pour la source " http: //thewallmarket.local/wp-content/themes/storefront/assets/js/masonry-script.js? Ver = 5.1.1 ".

Malheureusement, je ne peux pas fournir de lien vers le site car il est développé localement.

Quelle est la cause de ce problème? Comment puis-je le résoudre?

2
user3615604

Cette erreur signifie que la ressource (fichier JS dans ce cas) que vous chargez devrait être JS et plutôt HTML. Cela peut être dû au fait que votre chemin d'accès est incorrect ou au fait que le fichier local n'est pas JS.

Il est plus que probable que votre script fourni dans /assets/js/masonry-script.js N'est pas un fichier JS ou n'a pas pu être chargé en tant que tel. Il semble que vous obteniez un fichier introuvable (avec une redirection vers votre 404).

Essayez ceci entre les deux lignes wp_enqueue_script():

printf(get_template_directory_uri() . '/assets/js/masonry-script.js');

Cela devrait imprimer la spécification du chemin complet dans le fichier que vous essayez de charger. Vérifiez si vous pouvez charger l'URL imprimée dans un onglet (ou une fenêtre) de navigateur distinct. Vous devrez peut-être jouer avec l'URL comme ceci:

wp_enqueue_script('masonry-script', untrailingslashit(get_template_directory_uri() . '/assets/js/masonry-script.js', [], false, true);

Vérifiez également le contenu du fichier local pour voir s'il contient réellement JS. Sinon, vous devrez peut-être télécharger une copie correcte.

Si les exigences de votre projet le permettent et qu'il est disponible, vous pouvez envisager d'utiliser jQuery Masonry à partir d'un CDN.

Mise à jour: thème parent vs thème enfant

Selon le commentaire dans le documents de code WP pour get_template_directory_uri(), si vous voulez l'URL du thème enfant au lieu du parent thème, utilisez à la place get_stylesheet_directory_uri().

2
Stephan Samuel