我使用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
行的错误消息。出了什么问题?
答案 0 :(得分:1)
我打开了一个错误,他们最终修复了文档:
https://github.com/expressjs/serve-index/blob/master/README.md
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
中间件。
答案 1 :(得分:0)
我遇到了同样的问题。当我单击某个文件时,它会返回Cannot get
错误。当我点击文件夹时,它工作正常,所以我想出了这个解决方案。
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);
该程序将找到位于./public/
目录中的文件和文件夹,并将其作为回复发送。当我点击./public
目录中的响应中的文件时,程序运行app.get('filename', ..)
功能。由于我们下面没有此代码,因此返回Cannot get
错误。
以下是解决方案,您将检查客户端get
是否为该链接,如果他/她这样做,我们会将文件作为响应发送。这里只需要更多的编码。
app.get('/text.txt', function(req, res){ //text.txt is the file name here
res.sendFile(__dirname + "/public/text.txt");
})