我有一些通常可以正常工作的代码,但是现在两次出现了以下错误:
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客户端,但是我写的是一个,所以我不确定它没有做任何奇怪的事情,除了我看不到它如何影响响应对象。
答案 0 :(得分:0)
尝试
res.status(500).send(`error ${err.message}`)
,
新的Error是由构造函数制成的对象,属性之一是message。
答案 1 :(得分:0)
哦,我是个傻瓜。我在这里提出了自己的问题。这是在访问外部API的端点上,并且因为我在heroku上,所以我需要所有请求都在30秒以内,所以我编写了一些超时代码,该代码会发送错误,然后将诸如res.send
之类的各种功能转换为no -op函数。当然,问题是我没有在那些无操作中返回res对象。
?♀️