Javascript Can';t访问Express中按服务索引列出的文件
我使用Express为Node.js编写了以下非常简单的服务器: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
'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形式实现。