mongodb topology.s.promiseLibrary未定义

时间:2018-06-12 13:20:02

标签: node.js mongodb promise bluebird gridfs-stream

我在带有Gridfs的node.js中使用mongodb,我在this line上遇到TypeError: Promise is not a constructor。我已经追溯了一点,我可以看到this linetopology.s.promiseLibrary未定义。我不知道自己能做些什么才能做到这一点。我的理解是mongodb只会使用内置的ES6 Promise,即使我没有连接蓝鸟或类似的东西。

奇怪的是,topology.s.options.promiseLibrary 定义的。我不确定我配置它是否有错误。我还没有改变我的代码(我已经恢复到之前正在运行的代码)。我的节点版本是v9.2.0。我的Mongodb是3.10.0。我的gridfs-stream是1.1.1。

如果我评论this line,那么一切正常。

const Promise = topology.s.promiseLibrary;

这是一个错误吗?可能是什么原因?似乎可能存在外部原因,但我不确定在哪里继续我的搜索。怎么topology.s.promiseLibrary应该被设定?为什么没有定义?

2 个答案:

答案 0 :(得分:0)

我停止使用bluebird作为我的promise库,转而使用内置的ES6 Promise库,现在异常已经消失。我没有想法为什么我不能使用蓝鸟。它一直在工作,然后本周突然发生了: nope

更改

mongoose.Promise = require('bluebird');

mongoose.Promise = Promise;

答案 1 :(得分:0)

以某种方式,我的mongodb实际上设置为3.1.0-beta4,这似乎引起了这个问题。

我将mongodb固定为2.2.34,一切都很好。