我目前正在尝试使用Node.js和connect编写一个非常简单的Web服务器,它基本上只是静态地服务于单个目录。
var server = connect.createServer();
server.use(connect.logger());
server.use(connect.static(DOCUMENT_ROOT));
server.listen(SERVER_PORT);
这基本上是工作,我可以连接到服务器和它的服务index.html给我。
当我试图提供图像时(无论是在html中还是直接打开它们的url),问题就出现了。他们被送达,但似乎并不完全,产生这样的结果:
我看了标题,但找不到任何明显的缺陷。正确的内容大小是存在的,唯一让我感到奇怪的是,内容类型似乎丢失了,但似乎浏览器正确地解决了它。有趣的是,如果我手动提供图像,它会工作。因此,使用此代码可以正确地提供图像:
var server = connect.createServer();
server.use(connect.logger());
server.use(function(req, res, next) {
console.log(req.url);
if (req.url != "/testimage.png") {
next();
return;
}
var data = fs.readFileSync(DOCUMENT_ROOT + req.url);
res.writeHead(200, {'Content-Type': 'image/png'});
res.write(data);
res.end();
});
server.use(connect.static(DOCUMENT_ROOT));
server.listen(SERVER_PORT);
有什么想法,为什么服务的图像与连接不工作?由于这是一个相当小的例子,我觉得奇怪的是它不工作...我对连接的理解有错吗?
更新
我又查了一下。这似乎是发送模块的流组件的问题-它从不停止流文件,而是无休止地重复它。我想这可能与我运行Nodelike有关,所以我打开了一个问题at the Nodelike repo。如果有人有主意我还是会很高兴
1条答案
按热度按时间iswrvxsc1#
只是为了解决这个问题:毕竟这是诺德利克的问题。似乎Nodelike有一个问题或错误的流,导致这一点。切换到文件的同步传递解决了这个问题。