首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理Gcal Response + express和header问题

管理Gcal Response + express和header问题
EN

Stack Overflow用户
提问于 2020-12-23 01:19:54
回答 1查看 26关注 0票数 0

我对节点很陌生,我的头撞在墙上,这应该是一个简单的node+express+googlecal+pug问题。

gcal节点/快速路( controller

  • controller )接收请求和调用then...

  • executes确保验证auth和then...

  • executes一个成功的Gcal function...console.log具有我需要的数据(在控制器函数中)直接返回“无法在将其发送到客户端后设置头”....why是对Gcal API的调用,迫使响应返回到客户端??通过对每个函数的单独调用使其变得更微观,结果是相同的结果

我在这里错过了什么?

代码语言:javascript
复制
  getcalendars: async function(oAuth2Client, res)   {
const calendar = google.calendar({ version: "v3", auth: oAuth2Client });

cal = await calendar.calendarList.list(
  {},
  (err, result) => {
    //console.log("HEADERS SENT1?: "+res.headersSent);
    if (err) {
    console.log('The API returned an error: ' + err);
    return;
    }

    console.log(JSON.stringify(result));
    message2 = JSON.stringify(result)


  res.render('schedules', {message2: message2})
  return
});

},

编辑:调用函数

代码语言:javascript
复制
router.route('/dashboard/schedules')
.get(async function(req, res) {

  if (req.session.loggedin) {

          
//x =  gcalController.getcalendars(req, res);  
            token = await gcalController.gettoken(req, res);
            isAuth = await gcalController.calauth(token);
            listcalendars = await gcalController.getcalendars(isAuth,res);
      } else {
          res.redirect("/?error=failedAuthentication")
          //res.send('Please login to view this page!');
      }
      
});
EN

回答 1

Stack Overflow用户

发布于 2020-12-23 02:19:03

当您不止一次发送响应时,就会发生Can't set headers already sent。通常,您可以通过返回res.send()调用来终止函数。

它看起来像创建res对象的快递中间件在res.render()从微任务队列中取出时发送响应。

你能出示完整的密码吗?这似乎源于调用getcalendars的作用域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65417898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档