Je suis aux prises avec ce problème depuis quelques jours et n'arrive pas à aller au fond des choses. Nous faisons une application très simple de noeud/express, et essayons de servir nos fichiers statiques en utilisant quelque chose comme:
app.use(express.static(path.join(__dirname, "static")));
Cela fait ce que je m'attends à ce que pour la plupart. Nous avons quelques dossiers dans notre dossier statique pour nos CSS et javascript. Nous essayons de charger notre css dans notre vue EJS en utilisant ce chemin statique:
<link rel="stylesheet" type="text/css" href="/css/style.css">
Lorsque nous atteignons notre route /
, Nous obtenons tout le contenu, mais notre code CSS ne se charge pas. Nous obtenons cette erreur en particulier:
A refusé d'appliquer le style à partir de ' http: // localhost: 3000/css/style.css ' car son type MIME ('text/html') n'est pas un type MIME de feuille de style pris en charge et une vérification MIME stricte est autorisé.
npm verify cache
rm -rf node_modules
npm install
path.join(__dirname, '/static/')
app.get("/", function(req, res) {
res.render("search");
});
<!DOCTYPE html>
<html>
<head>
<title>Search for a Movie</title>
<link rel="stylesheet" type="text/css" href="/static/css/style.css">
</head>
<body>
<h1>Search for a movie</h1>
<form method="POST" action="/results">
<label for="movie-title">Enter a movie title:</label><br>
<input id="movie-title" type="text" name="title"><br>
<input type="submit" value="Submit Search">
</form>
</body>
</html>
{
"name": "express-apis-omdb",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "nodemon index.js",
"lint:js": "node_modules/eslint/bin/eslint.js ./ ./**/*.js --fix; exit 0",
"lint:css": "node_modules/csslint/cli.js public/css/; exit 0"
},
"license": "ISC",
"devDependencies": {
"babel-eslint": "^6.0.4",
"csslint": "^0.10.0",
"eslint": "^2.11.1",
"eslint-config-airbnb": "^9.0.1",
"eslint-plugin-import": "^1.8.1",
"eslint-plugin-jsx-a11y": "^1.3.0",
"eslint-plugin-react": "^5.1.1"
},
"dependencies": {
"body-parser": "^1.18.2",
"dotenv": "^5.0.0",
"ejs": "^2.5.7",
"express": "^4.13.4",
"morgan": "^1.7.0",
"path": "^0.12.7",
"request": "^2.83.0"
}
}
-app
--node_modules
--static
---img
---css
---js
--views
---movie.ejs
---results.ejs
---search.ejs
--index.js
--package-lock.json
--package.json
Remarque: Nous n'utilisons actuellement aucun fichier de mise en page pour notre système EJS.
Je suis heureux de fournir des détails supplémentaires si nécessaire.
Le problème est le résultat d'un fichier mal nommé. Notre élève avait un espace à la fin du style.css
fichier. Il y avait quelques astuces à cela, le premier était un manque de mise en évidence de la syntaxe dans l'éditeur de texte, et le second était l'éditeur de texte détectant le type de fichier pour d'autres fichiers CSS nouvellement créés, mais pas le fichier avec un nom incorrect. Supprimer cet espace a résolu le problème.
Merci slebetman pour votre aide en me dirigeant dans la bonne direction.
Dans l'application NOdejs avec Express, nous devons ajouter la ligne suivante pour informer le serveur du répertoire.
app.use(express.static(__dirname));
Cela résoudra le problème du rendu non css
Ce n'est pas une solution à votre question, mais cela pourrait aider quelqu'un d'autre à la recherche d'une solution comme moi. si vous utilisez app.get comme ci-dessous:
app.get(express.static(path.join(__dirname,"public")));
changez le en:
app.use(express.static(path.join(__dirname,"public")));