【发布时间】:2018-10-25 07:33:27
【问题描述】:
我在使用节点版本 10 和 MongoDB 数据库运行 Mocha 测试时遇到了这个巨大的错误:
(node:27884) UnhandledPromiseRejectionWarning: AssertionError [ERR_ASSERTION]:表达式评估为假值:
断言( user.blogPosts[0].cmets[0].content === '随着程序变得越来越大,它们也变得越来越复杂')
at User.findOne.populate.then.user (/Users/danale/Projects/users/test/association_test.js:50:9) at process._tickCallback (internal/process/next_tick.js:68:7) (node:27884) UnhandledPromiseRejectionWarning: Unhandled promise拒绝。此错误源于在异步内部抛出 没有 catch 块的函数,或者通过拒绝一个承诺 不使用 .catch() 处理。 (拒绝 ID:1)(节点:27884)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的 Node.js 进程。
对于之前工作的 Mocha 测试:
it('saves a full relation graph', done => {
User.findOne({ name: 'Joe' })
.populate({
path: 'blogPosts',
populate: {
path: 'comments',
model: 'comment',
populate: {
path: 'user',
model: 'user'
}
}
})
.then(user => {
assert(user.name === 'Joe');
assert(user.blogPosts[0].title === 'Eloquent JavaScript');
assert(
user.blogPosts[0].comments[0].content ===
'As programs get bigger, they also become more complex'
);
assert(user.blogPosts[0].comments[0].user.name === 'Joe');
done();
});
});
所以我知道问题出在这里:
assert(
user.blogPosts[0].comments[0].content ===
'As programs get bigger, they also become more complex'
);
但这到底有什么问题呢?
【问题讨论】:
-
为什么不添加一个带有控制台和/或调试点的 catch 块来找出问题所在?
标签: javascript node.js