Node.js 节点赢得';不允许使用CSS,因为MIME类型text/html不是受支持的样式表
我正在尝试将样式表加载到从Node Express提供的HTML文件中,但不断出现以下错误: 拒绝应用“”中的样式,因为其MIME类型('text/html')不是受支持的样式表MIME类型,并且启用了严格的MIME检查 我在这里已经研究过类似的问题,但是没有一个解决了这个问题。我在链接中添加了Node.js 节点赢得';不允许使用CSS,因为MIME类型text/html不是受支持的样式表,node.js,express,Node.js,Express,我正在尝试将样式表加载到从Node Express提供的HTML文件中,但不断出现以下错误: 拒绝应用“”中的样式,因为其MIME类型('text/html')不是受支持的样式表MIME类型,并且启用了严格的MIME检查 我在这里已经研究过类似的问题,但是没有一个解决了这个问题。我在链接中添加了type=text/css,并尝试了css文件的各种不同路径 这些链接都不会加载CSS文件: <link rel="stylesheet" type="text/css" href="style.c
type=text/css
,并尝试了css文件的各种不同路径
这些链接都不会加载CSS文件:
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="/style.css">
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="/create/style.css">
<link rel="stylesheet" type="text/css" href="./create/style.css">
<link rel="stylesheet" type="text/css" href="http://localhost:3000/create/style.css">
server.js
const app = require('express')()
const http = require('http').createServer(app)
app.get('/create', function (req, res) {
res.sendFile(__dirname + '/create/index.html');
})
http.listen(3000, function () {
console.log('listening on *:3000')
});
这些链接都不会加载CSS文件
是的,问题是与文件关联的MIME类型,更改链接不会更改MIME类型。除非您为同一个文件提供不同的路由和不同的MIME类型(是否?)
这里感兴趣的MIME类型是text/css
在发送HTTP请求之前,需要更改其标头
调用sendFile()时可以执行此操作:
这些链接都不会加载CSS文件
是的,问题是与文件关联的MIME类型,更改链接不会更改MIME类型。除非您为同一个文件提供不同的路由和不同的MIME类型(是否?)
这里感兴趣的MIME类型是text/css
在发送HTTP请求之前,需要更改其标头
调用sendFile()时可以执行此操作:但是
sendFile()
正在发送index.html
文件。可能不允许在使用sendFile()
发送的HTML文件中加载CSS文件?是的,允许加载,但有一个细微之处:一旦HTML文件被提供,浏览器将解析它,然后发送另一个请求(对于HTTP1.1),以获取CSS文件、图像,等等。您可以在web Developer控制台的“网络”选项卡下查看请求和服务器响应。这意味着您的服务器必须实现一个路由来服务CSS文件,就像index.html一样,但使用不同的MIME类型。请注意,Express中有一个工具可以轻松地服务静态文件:谢谢,使用静态文件选项解决了MIME类型错误!我现在唯一的问题是所有静态文件都来自同一个文件夹。我使用app.use(express.static('create'))
和app.use(express.static('game'))
添加了两个静态文件夹,但是第二个被忽略了。。。所有样式都来自第一个文件夹。您放在“static”目录下的所有目录和文件都将用作static。您不必创建第二个静态目录,它类似于Apache的“public_html”目录。假设您在Express中声明的静态目录称为“static”,那么您可以访问子目录中的CSS文件而不声明它:例如,在路径“public/CSS/style.CSS”下,但是sendFile()
正在发送index.html
文件。可能不允许在使用sendFile()
发送的HTML文件中加载CSS文件?是的,允许加载,但有一个细微之处:一旦HTML文件被提供,浏览器将解析它,然后发送另一个请求(对于HTTP1.1),以获取CSS文件、图像,等等。您可以在web Developer控制台的“网络”选项卡下查看请求和服务器响应。这意味着您的服务器必须实现一个路由来服务CSS文件,就像index.html一样,但使用不同的MIME类型。请注意,Express中有一个工具可以轻松地服务静态文件:谢谢,使用静态文件选项解决了MIME类型错误!我现在唯一的问题是所有静态文件都来自同一个文件夹。我使用app.use(express.static('create'))
和app.use(express.static('game'))
添加了两个静态文件夹,但是第二个被忽略了。。。所有样式都来自第一个文件夹。您放在“static”目录下的所有目录和文件都将用作static。您不必创建第二个静态目录,它类似于Apache的“public_html”目录。假设您在Express中声明的静态目录称为“static”,那么您可以访问子目录中的CSS文件而不声明它:例如,在路径“public/CSS/style.CSS”下,这是一个用于服务静态文件的线程,这家伙有相同的MIME问题:这是一个用于服务静态文件的线程,这家伙有相同的MIME问题:
const app = require('express')()
const http = require('http').createServer(app)
app.get('/create', function (req, res) {
res.sendFile(__dirname + '/create/index.html');
})
http.listen(3000, function () {
console.log('listening on *:3000')
});