我试图从节点Js服务器脚本中读取一个html文件,但它没有读取我在html文件中链接的css文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My node file</title>
<link rel = "stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class = "home">
<h2>Hello there</h2>
<p>Iam developing my first node js site</p>
</div>
</body>
</html>
我的CSS
.home{
background: red;
}
我的节点js文件
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
fs.readFile('index.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
}).listen(8080
我的期望
得到的内容
热烈欢迎任何帮助
答案 0 :(得分:2)
问题在于您使用index.html
回复每个请求。这意味着如果Web浏览器发送style.css
请求,它仍然会获得html。您可以查看浏览器控制台以验证这一点。要提供不同的文件,您可能需要检查request.url
以准确提供客户想要的文件:
const http = require('http');
const fs = require('fs');
http.createServer(function (req, res) {
if(req.url === "/index.html" || req.url === "/"){
fs.readFile('index.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
} else if(req.url === "/style.css"){
fs.readFile('style.css', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/css'});
res.write(data);
res.end();
});
}
}).listen(8080);
如果您认为对许多不同的文件感到讨厌,您可以使用允许静态目录服务的库,例如: express
答案 1 :(得分:-2)
我认为您需要将该css作为服务器端的静态文件提供,例如:
app.use(express.static('public'))
在这里你只是说,嘿客户端从现在起我在公共文件夹中的东西的路径可以像这样抓住:
http://localhost:3000/css/style.css
如果你有一个css文件夹,这就是你获得样式的方式,现在在你的客户端只是链接到那个