Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果在node.js中指定了目录路径,请列出目录内容_Javascript_Node.js_Apache_Static_Filesystems - Fatal编程技术网

Javascript 如果在node.js中指定了目录路径,请列出目录内容

Javascript 如果在node.js中指定了目录路径,请列出目录内容,javascript,node.js,apache,static,filesystems,Javascript,Node.js,Apache,Static,Filesystems,我只是尝试在node.js服务器上提供静态文件。如果url栏中的路径链接到一个静态文件,我可以很容易地做到这一点。但是,如果我试图列出目录内容,我需要使用node.js文件系统调用。我可以列出目录内容,但我想导航每个级别并根据需要获取内容。 与apache的默认功能类似,如果目录中没有“index.html”,它将列出所有内容 如何制作一个简单的html页面,列出目录内容,并可单击导航到和提供服务 特别是我有一个日志文件夹,我想访问。文件夹中有子目录和分散的各种日志 这是我到目前为止试过的 /

我只是尝试在node.js服务器上提供静态文件。如果url栏中的路径链接到一个静态文件,我可以很容易地做到这一点。但是,如果我试图列出目录内容,我需要使用node.js文件系统调用。我可以列出目录内容,但我想导航每个级别并根据需要获取内容。 与apache的默认功能类似,如果目录中没有“index.html”,它将列出所有内容

如何制作一个简单的html页面,列出目录内容,并可单击导航到和提供服务

特别是我有一个日志文件夹,我想访问。文件夹中有子目录和分散的各种日志

这是我到目前为止试过的

//inside server.js
// serve any static file inside my logs folder
app.use('/logs', express.static('logs'));



//logpage.html
    {日志列表%中文件的%s} {%endfor%}
这段代码正在运行,但我需要解析路径以深入遍历另一个目录。再次调用我的函数。我可以通过发帖请求来解决这个问题,但我觉得这已经变得太复杂了。。。
有什么建议吗?

如果指定的路径是目录,则使用serve静态中间件为我自己的自定义html提供服务

var serveStatic = require('serve-static');


// serve static logs files
var serve = serveStatic('logs');

app.use('/logs', serve, function (req, res) {
    // console.log(req)
    res.render('logpage', {logList:s3logger.findFiles(req.originalUrl), currentPath: req.originalUrl} );
});

你为什么要重新发明轮子?我最终使用了服务静态中间件。它解决了我的问题。
// controller s3logs.js
exports.findFiles = function(path)
exports.findFiles = function (path) {

if (path==undefined)
{
    path='logs';
}

var fileArray = fs.readdirSync(path); //get array of objects inside root dir
var fileObjArray = [];


// iterate through each file found in the directory
// find stats, make an obj, and push to new array

fileArray.forEach(function(item, index){
    const pathToItem =    path+'/'+item ;
    const stats = fs.statSync(pathToItem);

    var fileObj = {
        "name": item,
        "path": pathToItem,
        "isDir": stats.isDirectory(),
        "size": stats.size,
        "modified": stats.mtime
    };

    fileObjArray.push(fileObj);

    });

return fileObjArray;
};
//logpage.html
<body>
<ul>
    {% for file in loglist %}
    <li {% if loop.first %} class="first"{% endif %}>
        <a href= {{ file.path }}>{{ file.name }}</a>
    </li>
    {% endfor %}
</ul>
</body>
var serveStatic = require('serve-static');


// serve static logs files
var serve = serveStatic('logs');

app.use('/logs', serve, function (req, res) {
    // console.log(req)
    res.render('logpage', {logList:s3logger.findFiles(req.originalUrl), currentPath: req.originalUrl} );
});