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

t30tvxxf  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(130)

我目前正在尝试使用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。如果有人有主意我还是会很高兴

iswrvxsc

iswrvxsc1#

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

相关问题