node.js - 无法将响应发送回nodeJS 中的index.js

标签 node.js

我正在编写一段代码来连接到 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/

相关文章:

node.js - 在 VS2015 asp.net core 1.0 项目中使用 gulp 将文件从 node_modules 移动到 wwwroot

javascript - Node.js 在执行函数之前需要等待 for 循环完成

javascript - 不能将 openlayers-3 与 webpack 一起使用

java - 在 Heroku 上使用 Java 的 NodeJs 应用程序

javascript - setInterval 在没有 var 的情况下被清除

javascript - 如何使用 javascript aws-sdk 支持 dynamoDB 中的事务?

javascript - Node 和 Socket.IO - 私有(private)聊天(一对一)

javascript - 如何在实用程序文件中获取已启动的 Express 应用程序的服务器主机和端口

node.js - 开发和生产期间的 NPM 版本

node.js - 使用 Protractor 检测浏览器