如何检查HTML文件是否在给定目录中,然后使用同一目录中的引用CSS和JS文件打开该文件

时间:2019-05-16 22:35:39

标签: html node.js http fs

对于我的作业问题,我需要检查某个文件中是否存在某个文件 目录“ public”,然后通过“打开” 浏览器中的本地主机。我想使用一个函数来检查文件是否 目录中存在,然后如果为true,则将文件路径发送到另一个将打开文件的函数。这些都在我的server.js文件中,要打开的HTML文件以及该HTML文件的CSS和JS都在我的公共目录中。

这是使用node.js。我需要在控制台中运行node server.js,然后在浏览器中转到我的本地主机,并查看显示的具有样式和功能的网页。我尝试使用fs.access和fs.existsSync。不允许在此作业上使用Express。

 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);
 });

}

我收到一条错误消息,指出未定义文件路径(当我在调用fs.access时在参数中使用它时。

1 个答案:

答案 0 :(得分:0)

fs需要使用带有斜杠的路径才能工作,因此请尝试使用

,而不要使用var filepath = 'public' + req.url;
     var filepath = '/public' + req.url;