下一个(错误)在 node.js 中不起作用
Posted
技术标签:
【中文标题】下一个(错误)在 node.js 中不起作用【英文标题】:next(err) not working in node.js 【发布时间】:2017-07-28 14:03:37 【问题描述】:我的next(err)
无法正常工作。它忽略错误并仅加载页面而不是发送 HTTP 状态代码 404。
ldap 搜索工作正常,结果符合预期。当 else 语句被命中时,它只是不返回错误。
控制台确实在日志中显示failed
app.use(function(req, res, next)
conn.search('dc=foo', opts, function (err, res)
assert.ifError(err)
var entries = []
res.on('searchEntry', function (entry)
entries.push(entry.object)
)
res.on('end', function (result)
conn.unbind(function (err)
console.log('Disconnecting')
if (entries.length == 1)
next()
else
console.log('fail')
var err = new Error('Permission Denied')
err.status = 404
next(err)
)
)
)
)
【问题讨论】:
嗯,这是一个不错的 4 级深度回调地狱。你确定res.on('end')
应该在res.on('searchEntry')
里面吗?
哈哈是的,我的错误在于输入不是 cp/paste。而且我似乎总是在这里弄乱缩进
res.on('end')
仍在 res.on('searchEntry')
... 如果您给我们错误的代码,没有人可以帮助我们
伙计,在重新输入时错过某些内容是一个很容易犯的错误。
我知道,但是您正在寻求帮助,却没有给我们正确的代码,所以...¯\_(ツ)_/¯ 现在这是正确的代码,那么next
在哪里定义了吗?
【参考方案1】:
我不认为next
那样工作。如果您不想调用下一个中间件,请不要调用 next(error)
或 next()
。改用:
if (entries.length == 1)
next()
else
console.log('fail')
return res.status(404).send('Permission Denied')
【讨论】:
谢谢,但使用TypeError: res.status is not a function
会导致应用程序崩溃
那你做错了,因为res.status()
肯定是express API的一部分。
我不是说不是,我没有做错任何事情,我遵循了 ldapjs。我的搜索有效。由于某种原因,这只是行不通。所以风中的态度。如果成功了,我就不会在这里了,对吧?
哇,伙计不要那么敏感 :) 尽管你认为你没有做错什么,但你是做错了什么,因为 1) 你的代码没有t 工作,2) res.status 是 API 的一部分,所以它应该被定义,所以你没有传递正确的 res
对象。我只是说显而易见的,而不是在这里侮辱你。
我正在拉入正确的 res
对象,正如我在 console.log(res.status)
中看到的那样,它给了我一个 0,这是我对 ldapjs 的期望以上是关于下一个(错误)在 node.js 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 mysql-event 在 node.js 中不起作用?
Angular js 表达式在 Node js 项目中不起作用