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

Node.js 如何让Express静态文件服务器正确处理Windows反斜杠?,node.js,express,Node.js,Express,我已经编写了一个香草服务器(使用Node.js和Express)来浏览文件和目录(基于中间件)。在Windows机器上,它会被反斜杠弄糊涂,并在导航时提供无效/断开的链接,从而很快断开链接——链接变成了前斜杠和反斜杠的混合物,目录名称在其中反复错误地重复,等等 例如,转到localhost:8888,点击“lib”文件夹,然后点击“..”,我会看到: / \lib / \\lib\..\ / 这是密码 var express = require('express'); var server

我已经编写了一个香草服务器(使用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机器上工作?

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

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


    我发布了这个答案,因为我几乎没有注意到他们在评论中已经解决了这个问题。谢谢。

    您使用哪个版本的windows?我使用的是Windows 8,它适合我。我使用的是Windows 7 Enterprise SP1,节点0.10.12,Express 3.2.6,Connect 2.7.11查看
    目录.js
    ,似乎有一个更改可能破坏了Windows上的路径生成。请您在这里发布以下文件第176-180行的版本:
    connect/lib/middleware/directory.js
    ?@verybadalloc,谢谢——您基本上间接地提供了答案。我已将第176行更改为:+join(dir,file)。替换(/\\\/g,“/”),很高兴我能提供帮助。更有趣的是能够与社区共享修复程序@user568109您能告诉我们您有什么版本的Connect吗。我们可能需要发出请求来修复此问题。