Javascript Can';t访问Express中按服务索引列出的文件

Javascript Can';t访问Express中按服务索引列出的文件,javascript,node.js,express,server,Javascript,Node.js,Express,Server,我使用Express为Node.js编写了以下非常简单的服务器: 'use strict'; const express = require('express'); const serveIndex = require('serve-index'); express() .use(serveIndex(__dirname + '/public')) .listen(1024); 虽然这确实可以很好地显示目录的内容,但当我单击列出的任何文件时,我会收到一条错误消息,内容是C

我使用Express为Node.js编写了以下非常简单的服务器:

'use strict';

 const express = require('express');
 const serveIndex = require('serve-index');

 express()
   .use(serveIndex(__dirname + '/public'))
   .listen(1024);

虽然这确实可以很好地显示目录的内容,但当我单击列出的任何文件时,我会收到一条错误消息,内容是
Cannot get/example.png
。出什么问题了?

我也有同样的问题。当我点击一个文件时,它返回,
无法获取
错误。当我点击一个文件夹时,它工作正常,所以我想出了这个解决方案

var express    = require('express');
var serveIndex = require('serve-index');

var app = express();

app.use('/', serveIndex('public/', {'icons': true}));

app.get('/', function(req, res, next){

})
app.get('/text.txt', function(req, res){
  res.sendFile(__dirname + "/public/text.txt");
})

app.listen(1024);
此程序将查找位于my
/public/
目录中的文件和文件夹,并将其作为响应发送。当我单击响应中的一个文件(位于
/public
目录中)时,程序运行
app.get('filename',…)
函数。由于下面没有这段代码,它返回了
无法获取
错误

这里是解决方案,您将检查客户是否
获得链接,如果他/她获得链接,我们将文件作为响应发送。这里只需要多一点编码

app.get('/text.txt', function(req, res){  //text.txt is the file name here
  res.sendFile(__dirname + "/public/text.txt");
})

我打开了一个bug,他们最终修复了文档:

tl;dr版本:

var express    = require('express')
var serveIndex = require('serve-index')

var app = express()

// Serve URLs like /ftp/thing as public/ftp/thing
// The express.static serves the file contents
// The serveIndex is this module serving the directory
app.use('/ftp', express.static('public/ftp'), serveIndex('public/ftp', {'icons': true}))

// Listen
app.listen(3000)

您必须首先装载
express.static
中间件。

您需要提供完整的错误消息,本质上就是完整的错误消息。我应该寻找什么?这给了我与上面描述的完全相同的问题。你试过运行你的例子吗?@Sadiq我已经编辑了答案并运行了程序,现在可以了。@Sadiq如果你能做到,请告诉我too@Sadiq另外,如果你想使用默认的css,你可以从默认页面使用
检查
,从那里复制并粘贴
样式
,我想这是一个开始,但我想从目录中提供多个文件。官方文档很有用,但我想知道这是否可以用更纯粹的Express形式实现。