Как проверить, находится ли файл HTML в указанном каталоге, а затем открыть этот файл с помощью файлов CSS и JS, на которые есть ссылки, в одном каталоге - PullRequest
0 голосов
/ 17 мая 2019

В случае моей домашней работы мне нужно проверить, существует ли файл в определенном каталоге «public», а затем, если он есть, открыть его через localhost в браузере.Я хотел использовать функцию, чтобы проверить, существует ли файл в каталоге, а затем, если true, отправить путь к файлу другой функции, которая откроет файл.Это все в моем файле server.js, и файл HTML, который я хочу открыть вместе с CSS и JS для файла HTML, находится в моем общедоступном каталоге.

Это использует node.js.Мне нужно запустить узел server.js в консоли, а затем зайти на мой локальный хост в браузере и увидеть отображаемую веб-страницу со стилем и функциональностью.Я пытался использовать fs.access и fs.existsSync.Нам не разрешено использовать экспресс в этом назначении.

 var http = require('http');
 var fs = require('fs');

 http.createServer(function(req, res) {
     var filepath = 'public' + req.url;
     if (req.url == '/index.html' || req.url == '/') {
         fs.access(filepath);
    }
 }).listen(3000);
 console.log("Server running on Port 3000...");

 fs.access(filepath, (access) =>{
     if (access) {
        res.statusCode = 200;
        sendFile(filepath, res);
      }
     else {
        res.statusCode = 404;
        sendFile('public/404.html', res);
     }  
 });

 function sendFile(path, res) {
     fs.readFile(path, "utf8", function(data){
        res.end(data);
 });

}

Я получаю сообщение об ошибке, указывающее, что filepath не определен (когда я использую его в параметрах при вызовеfs.access.

1 Ответ

0 голосов
/ 17 мая 2019
Для

fs требуются пути с косой чертой, поэтому вместо var filepath = 'public' + req.url; попробуйте

     var filepath = '/public' + req.url;
...