Node.js - 静态文件被 HTML 代码取代

Node.js - static files are getting replaced with HTML code

提问人: 提问时间:2/8/2020 最后编辑:SternK 更新时间:2/8/2020 访问量:136

问:

问题

我刚开始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);

图片

css file replaced by index.html

network aktivity

node.js Express 服务器端

评论

0赞 2/8/2020
对不起,图像不清晰

答:

1赞 Aritra Chakraborty 2/8/2020 #1

因此,即使您用于提供静态文件,您也不会用作服务器,而是使用手动服务器来处理每个请求。expressexpressindex.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("."));