817 votes

La feuille de style n'est pas chargée à cause du type MIME

Je travaille sur un site web qui utilise gulp pour compiler et browser sync pour garder le navigateur synchronisé avec mes changements.

La tâche gulp compile tout correctement, mais sur le site web, je ne peux voir aucun style, et la console affiche ce message d'erreur :

Refus d'appliquer le style de ' http://localhost:3000/assets/styles/custom-style.css parce que son type MIME type MIME ('text/html') n'est pas un type MIME de feuille de style pris en charge, et que la vérification MIME stricte est activée.

Maintenant, je ne comprends pas vraiment pourquoi cela se produit.

Le HTML inclut le fichier comme ceci (ce dont je suis sûr qu'il est correct) :

<link rel="stylesheet" type="text/css" href="assets/styles/custom-style.css"/>

Et la feuille de style est une fusion entre les styles Bootstrap et font-awesome pour le moment (rien de personnalisé pour le moment).

Le chemin est également correct, puisqu'il s'agit de la structure du dossier :

index.html
assets
|-styles
  |-custom-style.css

Mais je continue à obtenir l'erreur.

Qu'est-ce que cela pourrait être ? Est-ce quelque chose (peut-être un paramètre ?) pour gulp/browsersync peut-être ?

0 votes

J'obtenais ce résultat lorsque ma feuille de style liée commençait par une balise html <style... au lieu de sauter directement dans les règles de style. J'obtenais également ce problème lorsque je créais un lien dans un fichier html chargé ultérieurement (AngularJS). J'ai donc opté pour un chargement dynamique au chargement de la page via JavaScript et le problème a disparu.

272 votes

Cela se produit lorsque vous définissez une URL incorrecte pour le fichier ou lorsque votre serveur n'est pas configuré correctement. Le résultat est que le navigateur ne reçoit pas la feuille de style, mais du HTML avec le statut 404 et l'en-tête "Content-Type". Puisque le navigateur reçoit quelque chose du serveur, il ne vous dit pas qu'il n'y a pas de réponse, mais il vous dit que le type MIME du fichier est incorrect. Le moyen le plus rapide de le vérifier est d'essayer d'ouvrir directement le fichier. http://localhost:3000/assets/styles/custom-style.css dans un nouvel onglet.

7 votes

Pour moi, c'était le cas décrit par RussCoder. La raison en est que j'ai utilisé Angular et que j'ai oublié d'ajouter un fichier css au packaging des styles dans le fichier angular.json. Il a donc été ignoré lors de la construction de l'application.

313voto

JPaulino Points 709

Pour les applications Node.js, vérifiez votre configuration :

app.use(express.static(__dirname + '/public'));

Remarquez que /public n'a pas de barre oblique à la fin, vous devrez donc l'inclure dans l'option href de votre HTML :

href="http://stackoverflow.com/css/style.css">

Si vous avez inclus une barre oblique ( /public/ ), vous pouvez simplement faire href="css/style.css" .

2 votes

href="http://stackoverflow.com/assets/style.css"> dans mon cas a résolu le problème !

203voto

Dans la plupart des cas, il s'agit simplement du Le chemin du fichier CSS est incorrect . Le serveur web renvoie donc status: 404 avec quelques Not Found contenu de la charge utile de html type.

Le navigateur suit ce (mauvais) chemin depuis <link rel="stylesheet" ...> avec l'intention d'appliquer des styles CSS. Mais le type de contenu renvoyé est contradictoire, ce qui entraîne l'enregistrement d'une erreur.

Enter image description here

0 votes

Mon problème était que le chemin n'était pas valide. Mais ce mauvais chemin était dû au fait que le href de base défini pour mon projet angulaire était incorrect. Si quelqu'un d'autre a commencé à voir cette erreur après avoir mis à jour votre base href, cela peut être la cause.

5 votes

Merci d'avoir pris la peine de documenter complètement et clairement comment une erreur 404 sur le fichier CSS peut produire ce message d'erreur (initialement) déroutant.

18 votes

Une autre façon de résoudre le problème est de coller l'url sur laquelle vous obtenez cette erreur dans un autre onglet. Si vous ne voyez pas de CSS, c'est probablement le problème.

194voto

Nick Points 3634

Le problème, je pense, était qu'une bibliothèque CSS commençait par des commentaires.

Pendant le développement, je ne réduis pas les fichiers et je ne supprime pas les commentaires. Cela signifiait que la feuille de style commençait avec quelques commentaires, ce qui faisait qu'elle était perçue comme quelque chose de différent de CSS.

Le problème a été résolu en supprimant la bibliothèque et en la plaçant dans un fichier vendeur (qui est TOUJOURS minifié sans commentaires).

Encore une fois, je ne suis pas sûr à 100% qu'il s'agisse d'un correctif, mais c'est tout de même une victoire pour moi car cela fonctionne comme prévu maintenant.

4 votes

Un demi-problème parce que si vous ne voulez pas mettre tout ce css dans le vendeur, que devez-vous faire ? Minimiser les node_modules à chaque fois que vous testez votre application ? Doh... Avez-vous trouvé quelque chose pour compiler juste un certain module ?

1 votes

Dans mon processus de compilation, le fichier vendor n'est créé qu'au moment de la construction et ensuite je ne fais que surveiller les changements sur les fichiers sur lesquels je travaille actuellement (ce qui n'est généralement rien qui va dans vendor). Cela signifie que la première compilation est un peu plus lente, mais ensuite je compile simplement mes fichiers sans minification, ce qui ne ralentit pas le processus pour moi.

3 votes

J'ai rencontré le même problème et j'ai découvert que j'essayais de charger une version miniaturisée du fichier qui était présent sur le serveur en tant que fichier non miniaturisé. Ainsi, j'essayais de charger "custom-style.min.css" alors que le fichier sur le serveur était "custom-style.css". Une fois que j'ai modifié mon lien pour charger la ressource correcte, tout a fonctionné correctement.

152voto

John Deverall Points 103

Cette erreur peut également se produire lorsque vous ne vous référez pas correctement à votre fichier CSS.

Par exemple, si votre balise de lien est

<link rel="stylesheet" href="styles.css">

mais votre fichier CSS est nommé style.css (sans le deuxième s), il y a de fortes chances que vous voyiez cette erreur.

9 votes

C'est exactement ce qui m'est arrivé. J'ai essayé toutes les réponses ici (changer le mimetype, supprimer les commentaires CSS, changer la configuration node.js...). Tout ce que j'ai eu à faire était de corriger une faute de frappe dans le nom du CSS. Doh !

8 votes

Pour compléter cette réponse, assurez-vous que gulp a bien trouvé le fichier css et l'a intégré dans votre dist. Chaque fois que j'obtiens cette erreur, c'est parce que j'ai foiré mon chemin vers les fichiers css d'une manière ou d'une autre et qu'il n'existe tout simplement pas dans le répertoire de construction.

6 votes

Ouaip, pareil pour moi, une simple et stupide faute de frappe. Je pense que ce que ça fait c'est que le serveur envoie une page de réponse 404, donc votre navigateur reçoit cette page 404 et vous dit que ce n'est pas du css correct... ce qui est vrai.

54voto

Gopi G.A Points 551

Créez un dossier juste en dessous/au-dessus du fichier style.css selon la structure d'Angular et créez un lien comme suit <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> .

Enter image description here

27 votes

Pourquoi cela fonctionne-t-il ? L'erreur indique que "text/html" n'est pas un type MIME pris en charge.

8 votes

Dans mon cas, l'erreur a disparu, mais les styles css ne sont pas appliqués :/

3 votes

J'ai passé un peu plus de temps à lire sur ce sujet et changer le type d'un fichier css en quelque chose d'autre peut causer de sérieux problèmes, comme le fait que le css soit lu comme du html par le serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X