html 为什么在我用ctrl+c退出节点示例之前,网页没有加载?

e5nszbig  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(135)

我正在做一个node.js项目,我已经创建了一个http服务器。它包括从API到html页面的Map值,并将其作为响应发送回来。但是当我用“nodemon app.js”命令运行服务器时,浏览器中的页面会一直加载,没有任何输出,直到我用ctrl+c退出正在运行的app.js进程。下面是服务器代码:

const server = http.createServer((req, res) => {
    if (req.url == "/") {
        request(
            "https://api.openweathermap.org/data/2.5/weather?q=Bhubaneswar&appid=ee6cc6680b9ce81b7df5332b412c5cff"
            ).on('data', (chunk) => {
                const objectData = JSON.parse(chunk);
                const arrData = [objectData];
                const realTimeData = arrData.map((val) => replaceVal(home, val)).join();
                res.write(realTimeData);
            }).on('end', () => {
                res.end();
            });
    }
});

我还想指出,realTimeData在执行时确实包含正确的html代码。我只想了解是什么原因导致页面只是继续加载而不向浏览器发送响应。
感谢帮助!!!

  • 我尝试用res.end(realTimeData)替换res.write(realTimeData)。
f0ofjuux

f0ofjuux1#

您需要在发送前对数据进行字符串化:

app.get('/', async (req, res) => {
request(
    "https://api.openweathermap.org/data/2.5/weather?q=Bhubaneswar&appid=ee6cc6680b9ce81b7df5332b412c5cff"
    ).on('data', (chunk) => {
        const objectData = JSON.parse(chunk);
        const arrData = [objectData];
        // const realTimeData = arrData.map((val) => replaceVal(home, val)).join();
        res.write(JSON.stringify(arrData));
    }).on('end', () => {
        res.end();
    });

})

相关问题