Я использую инфраструктуру Node.js и модуль Express для написания оболочки API, которая перенаправляет запросы на другой сервер. Я могу успешно перенаправить запрос на целевой сервер и получить действительный ответ, содержащий полезную нагрузку JSON. Однако после первоначального запроса, если я попробую другой запрос, я получаю следующую ошибку.
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Это пример кода, который я написал для маршрута HTTP GET Express:
app.get('/companyrecords/:name', function(req, res) {
const options = {
protocol: 'http:',
hostname: 'myhost',
port: 5001,
method: 'GET',
path: '/path/to/resource/?name=name',
auth: 'username:password',
headers: {
Connection: 'close'
}
}
const myAppReq = http.request(options, (myAppRes) =>{
console.log(`STATUS: ${myAppRes.statusCode}`);
myAppRes.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
res.send(chunk);
});
myAppRes.on('end', () => {
res.end('No more data to send.');
});
});
myAppReq.on('error', (err) => {
console.error(`Problem with request: ${err.message}`);
});
myAppReq.write('');
myAppReq.end();
});
Не уверен, почему я получаю эту ошибку, так как я вызываю метод req.write () для отправки заголовков запроса. При взгляде на трассировку стека ошибок возникает ошибка, когда я вызываю метод res.send () внутри обратного вызова к событию data. Возможно, я не понимаю поток выполнения запроса или последовательность, в которой генерируются события. Любое руководство / информация будет принята с благодарностью.