Node.js连接不能正确提供图像

时间:2014-06-06 11:44:39

标签: javascript image node.js connect httpserver

我目前正在尝试使用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或直接打开他们的网址)会出现问题。他们服务,但似乎并不完全,产生这样的结果:

connect image result

我查看了标题,但找不到任何明显的缺陷。有正确的内容大小,我发现唯一奇怪的是内容类型似乎缺失,但似乎浏览器正确地计算出来。有趣的是,如果我手动提供图像,它就可以工作。因此,使用此代码可正确提供图像:

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 个答案:

答案 0 :(得分:0)

只是为了解决这个问题:毕竟这是Nodelike的一个问题。似乎Nodelike有一个问题或流量错误导致这一点。切换到文件的同步传递解决了这个问题。