在node.js中先fetch后进行跳转报错的问题

发布于 2022-09-07 16:01:55 字数 837 浏览 12 评论 0

我的任务是在接收到访问请求后,先用fetch获取数据,再使用response.setHeader('Location','http://www.b.com')进行跳转,但是没有跳转成功,在node服务端报错。
代码如下:

import fetch from 'node-fetch';

let ret = await fetch('http://www.a.com');
let data = await ret.json();
//这里假设response已经为获取到的对象。
response.setHeader('Location','http://www.b.com');
response.statusCode = 302;
response.end();

错误提示如下:

Error: Can't set headers after they are sent.

但如果将fetch放到后面,就可以成功跳转,不会报错,代码如下:

import fetch from 'node-fetch';

//这里假设response已经为获取到的对象。
response.setHeader('Location','http://www.b.com');
response.statusCode = 302;
response.end();

let ret = await fetch('http://www.a.com');
let data = await ret.json();

但我先获取数据,再进行跳转的目的就没有达到。
所以应该怎么解决这个问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撩起发的微风 2022-09-14 16:01:55

如果使用的是Express的话,试一下redirect方法
这里有个类似的问题供参考:https://stackoverflow.com/que...

暮色兮凉城 2022-09-14 16:01:55

你 response 时,必须等待请求回来之后再设置

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文