gpt4 book ai didi

javascript - 使用 Node.js 从 API 填充数据

转载 作者:行者123 更新时间:2023-12-02 22:15:27 26 4
gpt4 key购买 nike

我在使用 Node.js 从 API 填充用户数据时遇到错误:“write after end”。我使用了 async 函数来获取数据,并使用了 wait,然后使用 Node 服务器将接收到的数据写入文档。

感谢您的帮助!

const http = require('http');
const https = require('https');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
homeVerleitung(req, res);
userVerleitung(req, res);
res.end('Footer\n');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

function homeVerleitung(request, response) {
if (request.url === '/') {
response.setHeader('Content-Type', 'text/plain');
response.write('Header\n');
response.write('Home\n');
}
}

function userVerleitung(request, response) {
if (request.url.length > 1) {
response.setHeader('Content-Type', 'text/plain');
const usedUrl = request.url.replace('/', '');
response.write('Header\n');
response.write(`${usedUrl}\n`);
const asyncFunk = async (request, response) => {
const userData = await getProfile(usedUrl);
await response.write('Name of User is: ' + userData.name);
await response.end('End');
};
asyncFunk(request, response);
}
}

function getProfile(url) {
return new Promise((resolve, reject) => {
https
.get(`https://teamtreehouse.com/${url}.json`, (res) => {
let body = '';

res.on('data', (d) => {
body += d.toString();
});
res.on('end', (d) => {
const jsonBody = JSON.parse(body);
resolve(jsonBody);
});
})
.on('error', (e) => {
console.error(e);
});
});
}

最佳答案

这是因为您调用了两次response.end()。只需删除

res.end('Footer\n')

从 createServer 函数并将其添加到您的 homeVerleitung 函数中:

function homeVerleitung(request, response) {
if (request.url === '/') {
response.setHeader('Content-Type', 'text/plain');
response.write('Header\n');
response.write('Home\n');
response.end('Footer\n');
}
}

关于javascript - 使用 Node.js 从 API 填充数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59395381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com