提问人: 提问时间:2/8/2020 最后编辑:SternK 更新时间:2/8/2020 访问量:136
Node.js - 静态文件被 HTML 代码取代
Node.js - static files are getting replaced with HTML code
问:
问题
我刚开始Node.js我的计划是首先使用一些基本的 HTML 和静态文件(css、js)设置一个服务器。
但是当我尝试用express.js甚至不表达来提供静态文件时,js/css 代码正在从我的index.html代码中被替换。没有Node.js一切似乎都很好,我什至在 python 中使用烧瓶尝试过,效果也很好。
这有什么常见的原因吗?
Node.js代码
var http = require("http");
var fs = require("fs");
var express = require("express");
var app = express();
app.use("/", express.static("public"));
http
.createServer(function(req, res) {
fs.readFile("index.html", function(err, data) {
if (err) {
res.writeHead(404, { "Content-Type": "text/html" });
return res.end("404 Not Found");
}
res.writeHead(200, { "Content-Type": "text/html" });
res.write(data);
return res.end();
});
})
.listen(8080);
图片
答:
1赞
Aritra Chakraborty
2/8/2020
#1
因此,即使您用于提供静态文件,您也不会用作服务器,而是使用手动服务器来处理每个请求。express
express
index.html
http
.createServer(function(req, res) {
fs.readFile("index.html"....);
})
.listen(8080);
此代码的含义是创建一个服务器,并为每个请求读取index.html
文件并提供此服务
因此,当请求是时,它不会歧视。http://localhost:8080/css.css
我建议多阅读一些关于在节点中创建服务器的信息。但解决方案是使用 express 作为服务器。
var http = require("http");
var fs = require("fs");
var express = require("express");
var app = express();
app.use("/", express.static("public"));
app.listen(8080, ()=>{
console.log('Server started');
})
这将正常工作,因为index.html位于名为 PUBLIC 的文件夹中
从文档中,
例如,使用以下代码提供图像、CSS 文件和 名为 public 的目录中的 JavaScript 文件:
app.use(express.static('public'))
现在,您可以加载以下文件 在 public 目录中:
请注意,如果您的文件位于项目根目录中,则可以使用:
app.use("/", express.static("."));
评论