Javascript 如何使用express提供目录服务?

Javascript 如何使用express提供目录服务?,javascript,node.js,express,Javascript,Node.js,Express,我想创建一个简单的express服务器,它发送一个目录,如下图所示: 此代码在浏览器窗口中显示无法获取/。您可以使用静态文件夹通过获取请求共享或获取文件 app.use(express.static(path.join(__dirname, 'shaders'))); 此代码在浏览器窗口中显示“无法获取” 发送GET-to/将回退到你的应用程序。使用*因为你没有定义路线。当您返回的是一个目录而不是一个文件时,不清楚该怎么做,因为这样做行不通 如果要访问特定文件,需要直接以localhost:

我想创建一个简单的express服务器,它发送一个目录,如下图所示:


此代码在浏览器窗口中显示
无法获取/

您可以使用静态文件夹通过获取请求共享或获取文件

app.use(express.static(path.join(__dirname, 'shaders')));
此代码在浏览器窗口中显示“无法获取”

发送GET-to/将回退到你的
应用程序。使用
*因为你没有定义路线。当您返回的是一个目录而不是一个文件时,不清楚该怎么做,因为这样做行不通

如果要访问特定文件,需要直接以
localhost:3000/shaders/xxx
等身份请求。使用
express.static
似乎是正确的。

使用库 例如,有些库已经为您完成了这项工作

自己动手 这是代码的修改版本,用于显示文件内容或列出目录中的文件/目录。我已经添加了一些注释来解释正在发生的事情,但是如果有不清楚的地方,请随时提问

const express=require(“express”);
常量路径=要求(“路径”);
常数fs=要求(“fs”);
常量app=express();
const listingPath=path.join(_dirname,“着色器”);
应用程序获取(“*”,(请求,请求)=>{
//使用请求的URL路径名构建文件的路径。
const filePath=path.join(listingPath,req.path);
//如果路径不存在,则返回404。
如果(!fs.existsSync(文件路径)){
返回res.status(404.end();
}
//检查现有项是目录还是文件。
if(fs.statSync(filePath.isDirectory()){
const fileindir=fs.readdirSync(文件路径);
//如果项目是目录:显示该目录中的所有项目。
返回res.send(filesInDir);
}否则{
const fileContent=fs.readFileSync(文件路径'utf8');
//如果项目是文件:显示该文件的内容。
返回res.send(fileContent);
}
});
常数端口=3000;
应用程序侦听(端口,()=>{
日志(“监听端口”,端口);
});

您可以以此为基础制作一个模板,其中包含指向文件/目录的链接,包含指向父目录的链接,显示更多元数据…

您也可以通过route使用它。此模板可能重复,是否回答了您的问题?有现成的npm模块可以做到这一点,谢谢!现在我将使用服务索引,但我喜欢将来自己创建页面的想法。谢谢:)
app.use(express.static(path.join(__dirname, 'shaders')));