Node.js - 静态文件被替换为 HTML 代码
Node.js - static files are getting replaced with HTML code
问题
我刚开始 Node.js 我的计划是首先设置一个服务器,其中包含一些基本 HTML 和静态文件 (css,js)。
但是当我尝试使用 express.js 甚至不使用 express 来提供静态文件时,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);
图片
因此,即使您使用 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
的文件夹中,这将正常工作
来自doc,
For example, use the following code to serve images, CSS files, and
JavaScript files in a directory named public:
app.use(express.static('public'))
Now, you can load the files that are
in the public directory:
请注意,如果您的文件位于项目根目录中,您可以使用:
app.use("/", express.static("."));
问题
我刚开始 Node.js 我的计划是首先设置一个服务器,其中包含一些基本 HTML 和静态文件 (css,js)。
但是当我尝试使用 express.js 甚至不使用 express 来提供静态文件时,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);
图片
因此,即使您使用 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
的文件夹中,这将正常工作来自doc,
For example, use the following code to serve images, CSS files, and JavaScript files in a directory named public:
app.use(express.static('public'))
Now, you can load the files that are in the public directory:
请注意,如果您的文件位于项目根目录中,您可以使用:
app.use("/", express.static("."));