如何让Express静态文件服务器正确处理Windows反斜杠?

时间:2013-06-26 16:41:00

标签: node.js express

我编写了一个vanilla服务器(使用Node.js和Express)来浏览文件和目录(基于directory中间件)。在Windows机器上,它被反斜杠搞糊涂了,并且在导航时通过提供无效/损坏的链接快速中断 - 链接变成前向和反斜杠的汤,其中dir名称在其中反复重复,等等。

所以或者例如,转到localhost:8888,点击'lib'文件夹,然后'..',给我:

/ \lib / \\lib\..\ / 

这是代码。

var express = require('express');
var server = express();
server.configure(function(){
    server.use(express.static('./stuff'));
    server.use(express.directory('./stuff'));
});
server.listen(8888);

我需要做些什么才能让它在Windows机器上运行?

1 个答案:

答案 0 :(得分:0)

@verybadalloc和@ user2524973在express directory.js中间件中发现了导致此问题的错误。在对原始问题的评论中,他们也提供了修复。

找到说

的行
return '<li><a href="' + join(dir, file) + '" class="' + classes.join(' ') + '"' + ' title="' + file + '">' 

它应该在第176行附近。将其更改为:

return '<li><a href="' + join(dir, file).replace(/\\/g, '/') + '" class="' + classes.join(' ') + '"' + ' title="' + file + '">' 

...它应该在Windows上运行得更好。

似乎此修补程序已添加到主存储库中,但后来被删除了,因此此修复程序可能会产生一些无法预料的后果?无论如何,对我来说,我只是用它来列出我的音乐文件夹。

我发布了这个答案,因为我差点错过了他们在评论中解决了这个问题。感谢。

相关问题