1

我编写了一个普通服务器(使用 Node.js 和 Express)来浏览文件和目录(基于目录中间件)。在 Windows 机器上,它会被反斜杠弄糊涂,并在您导航时通过提供无效/损坏的链接而迅速中断——链接变成了正斜杠和反斜杠的汤,目录名称错误地一遍又一遍地重复,等等。

例如,转到 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 机器上工作?

4

1 回答 1

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 上工作得更好。

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

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

于 2013-08-31T13:32:04.157 回答