我正在编写一段代码来连接到 jira api 并使用 Node js 返回 Jira 问题的 jira 状态,并且在将响应返回到定义的方法时遇到问题。请求已超时。这里我粘贴我的代码。
index.js代码:
app.post('/GetJiraIssueStatus', async (req, res) => {
var objinput = req.body
var issuestatus
issuestatus = require('./get_jira_issue_status.js')
const response = await issuestatus.getStatus(objinput);
console.log("outer: " + response)
res.send(response)
})
**get_jira_issue_status.js code**
const JiraClient = require('jira-connector')
const request = require('request')
const output1 = { "status": "initializing" };
exports.getStatus = async function (JiraRequest) {
console.log("issue:" + JiraRequest.issue)
var issueNum = JiraRequest.issue
var options = {
method: 'GET',
url: 'https://jira.service.anz/rest/api/latest/issue/' + issueNum + '?expand=names,renderedFields',
headers: {
'Accept': 'application/json',
}
};
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
const mmmm = request(options, async function (error, response, body) {
console.log("sent request to jira")
if (error) { console.log("we have an error"); throw new Error(error) }
console.log('Response: ' + response.statusCode + ' ' + response.statusMessage);
var jsonObj = JSON.parse(body);
let return_value = newFunction(jsonObj.fields.status.name);
console.log("return value:" + return_value)
return return_value;
});
console.log("mmmm is" + mmmm.fields.status.name);
}
logStatus = function (status) {
output1.issueStatus = status;
}
function newFunction(response) {
console.log("new function:" + response)
return (response);
}
最佳答案
我在这里看到的一个问题是您的 getStatus 方法是异步的,因此预计它会返回一个您没有返回的 promise 。您可以使用 request-promise
或将请求包装在 Promise 中,如下所示
return new Promise.resolve((resolve, reject) => {
request(options, async function (error, response, body) {
console.log("sent request to jira")
if (error) { console.log("we have an error"); reject(error) }
console.log('Response: ' + response.statusCode + ' ' + response.statusMessage);
var jsonObj = JSON.parse(body);
let return_value = newFunction(jsonObj.fields.status.name);
console.log("return value:" + return_value)
resolve(return_value);
});
});
顺便说一句,请求包不再被维护。最好使用 axios、got 等。
关于node.js - 无法将响应发送回nodeJS 中的index.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60000522/