NodeJS expressjs中与图像输出相关的一些疑问

2ledvvac  于 2023-04-11  发布在  Node.js
关注(0)|答案(1)|浏览(138)

这是我的代码

const response = await fetch(`http://example.com\?write=Hi+Pls+Help`); // when we go here shows a png image
    const headers = { "Content-Type": "image/png" };

  //set status code and headers
  res.writeHead(200, headers);
response.body.pipe(res);

如果我一直在网上
我试图显示另一个图像从后端服务器的地雷是完全动态的
请帮我想个办法

vatpfxk5

vatpfxk51#

需要检查的一件事是,您正在获取的URL是否正确,是否可以从后端服务器访问。您可以尝试直接在浏览器中访问URL,以查看图像是否正确加载。
假设URL是正确的,另一件要考虑的事情是HTTP请求的超时设置。默认情况下,fetch请求的超时设置通常被设置为“无限”,这意味着它将无限期地等待响应。您可以尝试在fetch选项中设置一个超时值以防止它超时,如下所示:

const response = await fetch(`http://example.com\?write=Hi+Pls+Help`, { timeout: 5000 }); // set timeout to 5 seconds

这将为获取请求设置5秒的超时。如果服务器在5秒内没有响应,它将抛出超时错误。
最后,您还可以尝试记录在fetch请求期间抛出的任何错误消息,以获取有关失败原因的更多信息:

try {
  const response = await fetch(`http://example.com\?write=Hi+Pls+Help`, { timeout: 5000 });
  const headers = { "Content-Type": "image/png" };
  res.writeHead(200, headers);
  response.body.pipe(res);
} catch (err) {
  console.error(err);
  res.status(500).send('Error fetching image');
}

这将把所有错误记录到控制台,如果获取请求失败,则向客户端发送500错误响应。

相关问题