为什么会出现http header错误,漏洞在哪里?

Why does http header error show up and where is the flaw?

我试图获取 XML 并将其解析为 JSON。这里包含 2 个文件。 但我一直收到这个错误。我试着环顾四周,但仍然没有得到答案。

main.js

/** SET ENGINE TO PUG */
app.set("views", path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(express.static(path.join(__dirname, 'public')));
    
/** ROUTES */
app.get('/', (req, res) => {
    res.render('index',{title: 'HOMEPAGE'});
})

app.get('/json_results', (req, res, next) => {
    res.render('json_results', {title: 'NEWS TODAY', json_results_in: 
        getJson.produce_xml(url, function (err, data) {
            if (err) {
                return console.error(err);
            }
            res.json(JSON.stringify(data, null, 2));
        })
    });
});

get_json.js

var express = require('express');
var https = require('https');

/** PARSE XML TO JSON */
var parsedtext = require('xml2js').parseString;

function xmlToJson(url, callback) {
    var req = https.get(url, function(res) {
        var currentXml = '';

        res.on('data', function(chunk) {
            currentXml += chunk;
        })

        res.on('error', function(err) {
            callback(err, null);
        })

        res.on('timeout', function(err) {
            callback(err, null);
        })

        res.on('end', function() {
            parsedtext(currentXml, function(err, result) {
                callback(null, result);
            })
        })
    });
}

module.exports.produce_xml = xmlToJson

我得到的错误是

code: 'ERR_HTTP_HEADERS_SENT'

请赐教。提前谢谢你。

res.render 向请求发送响应(在本例中是从 pug 生成的 HTML 文档)。

res.json 还发送响应(一些 JSON)到请求。

一个响应由 header 和通常的 body 组成。

一个请求只能有一个响应。

当您调用 res.json 时,您正在尝试发送一个新的响应,从 header 开始(因此是错误消息),到您已经响应的请求。