ExpressJS-res.status(500)返回未定义,因此无法对其调用

时间:2019-02-21 20:18:03

标签: express typeerror

我有一些通常可以正常工作的代码,但是现在两次出现了以下错误:

TypeError: Cannot read property 'send' of undefined

代码是:

app.user.get('/status.json', mGatewayTimeout, function (req, res) {
  var user = req.user
  var qs = cu.querystring.parseUrl(req.url)
  if (user.apps && user.apps.beeminder && user.apps.beeminder.access_token) {
    if (bsCache[user.username] && !qs.force) {
      res.send(bsCache[user.username])
    } else {
      var bee = new Bee({access_token: req.user.apps.beeminder.access_token})
      bee.getUserSkinny(function (err, bm_user) {
        if (err) {
          bsCache[user.username] = null
          return res.status(500).send('error: ' + err.toString())

因此,当最后一行尝试在.send上调用res.status(500)时,会产生TypeError。

我留下了很多无关紧要的东西,因为如果我尝试删除所有我认为不相关的东西,我们将一无所有。

Bee是一个API客户端,但是我写的是一个,所以我不确定它没有做任何奇怪的事情,除了我看不到它如何影响响​​应对象。

2 个答案:

答案 0 :(得分:0)

尝试 res.status(500).send(`error ${err.message}`),  新的Error是由构造函数制成的对象,属性之一是message。

答案 1 :(得分:0)

哦,我是个傻瓜。我在这里提出了自己的问题。这是在访问外部API的端点上,并且因为我在heroku上,所以我需要所有请求都在30秒以内,所以我编写了一些超时代码,该代码会发送错误,然后将诸如res.send之类的各种功能转换为no -op函数。当然,问题是我没有在那些无操作中返回res对象。

?‍♀️