拒绝应用来自“ http:// localhost:3000 / css / style.css”的样式,因为其MIME类型('text / html')不是受支持的样式表MIME类型

时间:2018-07-02 20:19:34

标签: html css node.js

我只是创建一个示例网站模板,并在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
}

下面是文件夹的外观,其中显示了路径。我似乎找不到解决此问题的方法。有什么想法吗?

Website Folder

CSS Folder

4 个答案:

答案 0 :(得分:2)

这可能是由于没有预期的路径所致。

您在这里使用此行:

app.use(express.static(path.join(__dirname, "static")));

因此,在这种情况下,您需要一个名为“ static”的文件夹,并且可以在该文件夹内放置CSS和图像。您可以按如下所示链接到它们:

<link rel="stylesheet" href="/css/style.css" type="text/css">

参考:https://expressjs.com/en/starter/static-files.html

答案 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 放在一个文件夹中 - 将其命名为 staticpublic
所以您的 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不能解决问题。