1

对于 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));
4

0 回答 0