Node.js 如何让Express静态文件服务器正确处理Windows反斜杠?
我已经编写了一个香草服务器(使用Node.js和Express)来浏览文件和目录(基于中间件)。在Windows机器上,它会被反斜杠弄糊涂,并在导航时提供无效/断开的链接,从而很快断开链接——链接变成了前斜杠和反斜杠的混合物,目录名称在其中反复错误地重复,等等 例如,转到localhost:8888,点击“lib”文件夹,然后点击“..”,我会看到: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
/ \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吗。我们可能需要发出请求来修复此问题。