鍍金池/ 問答/Linux  HTML/ 在node.js中先f(wàn)etch后進(jìn)行跳轉(zhuǎn)報(bào)錯(cuò)的問題

在node.js中先f(wàn)etch后進(jìn)行跳轉(zhuǎn)報(bào)錯(cuò)的問題

我的任務(wù)是在接收到訪問請(qǐng)求后,先用fetch獲取數(shù)據(jù),再使用response.setHeader('Location','http://www.b.com')進(jìn)行跳轉(zhuǎn),但是沒有跳轉(zhuǎn)成功,在node服務(wù)端報(bào)錯(cuò)。
代碼如下:

import fetch from 'node-fetch';

let ret = await fetch('http://www.a.com');
let data = await ret.json();
//這里假設(shè)response已經(jīng)為獲取到的對(duì)象。
response.setHeader('Location','http://www.b.com');
response.statusCode = 302;
response.end();

錯(cuò)誤提示如下:

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

但如果將fetch放到后面,就可以成功跳轉(zhuǎn),不會(huì)報(bào)錯(cuò),代碼如下:

import fetch from 'node-fetch';

//這里假設(shè)response已經(jīng)為獲取到的對(duì)象。
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();

但我先獲取數(shù)據(jù),再進(jìn)行跳轉(zhuǎn)的目的就沒有達(dá)到。
所以應(yīng)該怎么解決這個(gè)問題?

回答
編輯回答
雨萌萌

如果使用的是Express的話,試一下redirect方法
這里有個(gè)類似的問題供參考:https://stackoverflow.com/que...

2018年4月2日 01:39