Node.js - stati c файлы заменяются кодом HTML - PullRequest
0 голосов
/ 08 февраля 2020

Проблема

Я только начал с Node.js Мой план состоял в том, чтобы сначала настроить сервер с некоторыми базовыми c HTML и stati c файлами (css, js ).

Но когда я пытаюсь подать файлы stati c с express. js или даже без express , код js / css заменяется из моего индекса. html код. Без Node.js все вроде бы работает нормально, я даже попробовал его с flask в 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

1 Ответ

1 голос
/ 08 февраля 2020

Таким образом, даже если вы используете express для обслуживания stati c файлов, вы не используете 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');
})

Это будет прекрасно работать ДАЙТЕ этот индекс. html НАХОДИТСЯ В ПУБЛИЧНОЙ ПУБЛИКАЦИИ C

Из do c,

Например, используйте следующий код для обслуживания изображений, CSS файлов и JavaScript файлов в каталог с именем publi c:

app.use(express.static('public'))

Теперь вы можете загружать файлы, которые находятся в каталоге publi c:

Обратите внимание, если ваши файлы находятся в вашем проекте root, вы можете использовать:

app.use("/", express.static("."));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...