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

Posted

技术标签:

【中文标题】如何检查 HTML 文件是不是在给定目录中,然后使用同一目录中引用的 CSS 和 JS 文件打开该文件【英文标题】:How to check if an HTML file is in a given directory, and then open that file with the referenced CSS and JS files within same directory如何检查 HTML 文件是否在给定目录中,然后使用同一目录中引用的 CSS 和 JS 文件打开该文件 【发布时间】:2019-10-04 06:06:49 【问题描述】:

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

这是使用 node.js。我需要在控制台中运行 node server.js,然后在浏览器中访问我的 localhost 并查看显示的具有样式和功能的网页。我试过使用 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 时在参数中使用它时。

【问题讨论】:

在您的fs.access 代码中,res 对象来自哪里? 【参考方案1】:

fs 需要带有前导斜杠的路径才能工作,因此请尝试使用 var filepath = 'public' + req.url; 代替

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

【讨论】:

以上是关于如何检查 HTML 文件是不是在给定目录中,然后使用同一目录中引用的 CSS 和 JS 文件打开该文件的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何检查文件是不是存在于目录中

在 OnPaint() 事件中,如何检查给定的矩形是不是与无效区域相交?

如何在linux中检查目录是不是存在。? [复制]

检查目录是不是包含具有给定扩展名的文件

如何检查单词是不是以给定字符开头?

如何检查给定的字符串是不是是 Windows 下的合法/有效文件名?