对于 express 中定义的静态文件,我有以下中间件:
app.use(express.static(__dirname + '/public'));
app.use('/lessons', express.static(__dirname + '/lessons', { redirect : false }));
在课程文件夹中,我有几个课程文件夹
lessons
|-- lesson01
|-- lesson02
.
.
.
在每个课程文件夹中都有一个lesson.md
我渲染的文件。该文件引用了同一课程文件夹中的图像。我希望能够仅img01.png
在 markdown 文件中使用例如来引用图像,但 express 期望图像可以/lessons/img01.png
在/lessons/lesson01/img01.png
.
在降价./img01.png
文件中用作对图像的引用也无济于事。
关于如何告诉 express 在同一目录中查找静态文件的任何想法?
谢谢
编辑 :
多一点信息,
获取课程文件的途径是:
app.get('/lessons/:name', function(req, res, next) {
res.locals.controller = 'lessons';
var name = req.params.name;
var lesson = lessons[name];
if (!lesson) {
return next();
}
lesson.path = 'lessons/' + name;
lesson.file = lesson.path + '/' + name + '.md';
markdown(lesson.file, function(result, err) {
if (err) {
console.log(err);
}
lesson.body = result;
res.locals.lesson = lesson;
res.render('lesson');
});
});
此外,我正在使用名为connect-slashes的中间件来删除每个 URL 末尾的斜杠。(作为这个SO问题的结果)
var slashes = require('connect-slashes');
var app = express();
app.use(express.static(__dirname + '/public'));
app.use('/lessons', express.static(__dirname + '/lessons', { redirect : false }));
// add middleware to remove trailing slash in urls
app.use(slashes(false));