Проблема в том, что «запрос» - это асинхронная c функция. Вы не можете этого сделать
var resp;
var req = request(options, function(error, response) {
if (error) throw new Error(error);
resp = response.body;
});
return resp;
Потому что "resp" всегда не определен. Вам нужно будет сделать что-то вроде этого
var resp;
var req = request(options, function(error, response) {
if (error) throw new Error(error);
return response.body;
});
Но это не сработает для вас. Краткое и простое решение: изменить библиотеку, чтобы сделать HTTP-запрос, и использовать «asyn c» и «await», чтобы легко использовать функции asyn c.
Например:
const fetch = require('node-fetch');
async function main(){
const data = await login();
console.log(data);
}
async function login(){
const url = "https://jsonplaceholder.typicode.com/posts";
const data = {
title: 'foo22222',
body: 'ba222r',
userId: 1
};
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify(data),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
});
const json = await response.json()
return json;
}
main();
В этом случае я использую библиотеку « node-fetch » и использую бэкэнд (в функции входа в систему), который создает сообщение и возвращает его ответ.