我在带有Gridfs的node.js中使用mongodb,我在this line上遇到TypeError: Promise is not a constructor
。我已经追溯了一点,我可以看到this line,topology.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
应该被设定?为什么没有定义?
答案 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,一切都很好。