在单个路由调用中出现多个axios调用:错误:发送后无法设置标头

时间:2019-05-23 15:26:39

标签: javascript node.js express axios jira-rest-api

我已经阅读了所有可以找到的与此错误有关的堆栈线程,尽管我从概念上学到了很多可能的错误,但我从中学到的任何知识都没有奏效。

问题是,在我的app.get(使用express)的索引页面中,我首先为axios发布了对Jira Api的基本身份验证的信息。然后在同一个.get方法中,我要运行一个初始查询来执行axios get。我没有在此调用中再次显式设置标题,但是当我尝试呈现结果时,出现错误。如果我从axios.get方法中取出res.render调用,则脚本的其余部分将正常工作。

我已经尝试将所有渲染移到仍然在app.get方法中的单个渲染中,但是不在我的axios调用中的任何promise回调之外。那时我设置的变量是未定义的(我相信它们不是按照我想要的方式从诺言中返回的。它还不在我的代码中,但是我尝试显式地在诺言中返回我的变量,但这并没有工作。我还试图返回整个axios.post函数,没有骰子。

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const axios = require('axios');
const hbs = require('express-handlebars');

const port = process.env.PORT || 3000;

var app = express();

app.engine('.hbs', hbs({defaultLayout: 'main', extname: '.hbs'}));
app.set('view engine', '.hbs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cors());

app.get('/', (req, res) => {

  const username = "jirauser";
  const password = "jirapassword"

  axios.post('https://myjirainstance.atlassian.net', {
    username: username,
    password: password,
    headers: {
      'Authorization': 'Basic ' + new Buffer(username + ":" + password).toString('base64'),
      'Content-Type': 'application/json'
    }
  }).then (response => {
    // console.log(res);
    const message = response.data;
    message;
    res.render('index', {
      message: "you're logged in"
    });
  }).catch(function(error) {
    authError = error;

    res.render('index', {
      error: error
    })
  });

  return axios.get('https://jamfsoftware.atlassian.net/rest/api/2/search?jql=assignee=carlton.brumbelow')
  .then (response => {
    console.log(response);

    queryResponse = 'your query was successful'

  }).catch( error => {
    console.log(error);

    queryError = error

  });

  // res.render('index', {
  //   message: message,
  //   authError: authError,
  //   queryResponse: queryResponse,
  //   queryError: queryError
  // })

})



app.listen(port, () => {
  console.log(`Server started on port ${port}`);
})

0 个答案:

没有答案