我只是创建一个示例网站模板,并在Chrome控制台中收到此错误:
Refused to apply style from 'http://localhost:3000/css/style.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
尝试加载css / style.css页面时出现404错误,但路径似乎正确。以下是该网站的一些基本代码:
应用程序:
var express = require('express');
var app = express();
var exphbs = require('express-handlebars');
var path = require('path');
app.engine('hbs', exphbs({extname:'hbs'}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(express.static(path.join(__dirname, "static")));
app.get('/', function(req, res) {
res.render('resume.hbs')
})
app.listen(3000)
HTML:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<base href="/">
<link rel="stylesheet" href="..\css\style.css" type = "text/css">
<title>Example Website</title>
<h1>Header</h1>
<hr id = 'headerBorder'>
</head>
<body>
</body>
</html>
CSS:
h1 {
color: blue
}
下面是文件夹的外观,其中显示了路径。我似乎找不到解决此问题的方法。有什么想法吗?
答案 0 :(得分:2)
这可能是由于没有预期的路径所致。
您在这里使用此行:
app.use(express.static(path.join(__dirname, "static")));
因此,在这种情况下,您需要一个名为“ static”的文件夹,并且可以在该文件夹内放置CSS和图像。您可以按如下所示链接到它们:
<link rel="stylesheet" href="/css/style.css" type="text/css">
答案 1 :(得分:0)
由于您正在使用hbs,因此请创建“ public”文件夹,并将静态文件夹css,javaScript,img保留在“ public”文件夹中。然后
const path = require("path");
app.use(express.static(path.join(__dirname, "public")));
这是魔术,因为您告诉Express使用“ public”作为静态文件夹,所以当您链接该文件夹中的文件时,hbs会将“ public”文件夹作为“ root”文件夹。 因此,当您链接main.css时,假设您在文件夹“ public”,“ public / style / main.css”目录中的“ style”文件夹中有main.css:
<link rel="stylesheet" href="style/main.css" type="text/css" />
此外,这是Express中hbs的完整设置:
app.set("view engine", "hbs");
app.engine(
"hbs",
expressHbs({
defaultLayout: "layout",
extname: ".hbs",
layoutsDir: __dirname + "/views/layouts",
partialsDir: __dirname + "/views/partials"
})
);
答案 2 :(得分:0)
将所有 css 放在一个文件夹中 - 将其命名为 static
或 public
。
所以您的 css 位于 public/css/style.css
。
在您的 app.js
中,您可以通过以下方式引用静态文件:
app.use(express.static(path.join(__dirname, "public")));
public
文件夹的路径应相对于 app.js
文件。
答案 3 :(得分:-1)
我也尝试更改不同的斜杠,但这不能完全解决问题。引导CSS也可能已经定义了h1。因此,您需要更改HTML中CSS文件的顺序:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../css/style.css" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<base href="/">
<title>Example Website</title>
<h1>Header</h1>
<hr id = 'headerBorder'>
</head>
<body>
</body>
</html>
仅将!important
添加到CSS不能解决问题。