服务器或 HTML 不显示 CSS(但在打开 HTML 文件时有效)



我一直在尝试学习如何为一个简单的网站设置节点.js服务器,但遇到了一些奇怪的行为。当我从计算机打开我的索引.html文件时,它会完美打开,所有 CSS 都正常工作。但是,我随后设置了一个基本的节点.js服务器,当通过浏览器访问索引.html文件时,它只加载html而不是CSS。

我对此非常陌生,所以无法尝试太多,也因为代码非常简单,所以看不到缺少的内容(如果有帮助,我尝试按照本教程进行操作)。我还在这里发现了另一个看起来相似的问题,但它没有答案,也没有真正的帮助,我确实检查了所有文件都是 UTF-8。

该 HTML:

<html>
<head>
<title>My Page</title>
<link rel="stylesheet" href="styles.css" type="text/css">
</head>
<body>
<h1>A headline</h1>
</body>
</html>

而节点.js服务器:

const http = require("http");
const fs = require("fs");
const server = http.createServer((req, res) => {
res.writeHead(200, {"Content-Type": "text/html"});
const myReadStream = fs.createReadStream(__dirname + "/index.html", "utf8");
myReadStream.pipe(res);
});
server.listen(3000, "127.0.0.1");
console.log("Listening to port 3000");

当我将 CSS 包含在<style>标签中并直接包含在索引中时.html它确实有效,但我尝试在<style>标签之间放置<link rel="stylesheet" href="styles.css" type="text/css">,但仍然没有(如果有必要,那也会很奇怪,因为我只是打开 html 文件时它会完美显示)。我也尝试删除type=text/css但这似乎并没有改变任何东西。任何帮助将不胜感激!

你也需要为style.css服务。您正在提供index.html但在索引中.html当请求到达您的应用程序时,它正在点击http://127.0.0.1:300/style.css,它仍在提供index.html文件。(可以在开发人员工具的网络窗格中确认这一点)

const server = http.createServer(function (req, res) {
const url = req.url;
if (url === '/style.css') {
res.writeHead(200, { 'Content-Type': 'text/css' }); // http header
fs.createReadStream(__dirname + "/style.css", "utf8").pipe(res);
} else {
res.writeHead(200, { 'Content-Type': 'text/html' }); // http header
fs.createReadStream(__dirname + "/index.html", "utf8").pipe(res);
}
})

注意:使用express很容易实现这一点,这可能是最流行的 nodejs 包。

相关内容

  • 没有找到相关文章

最新更新