0

我在带有 Gridfs 的 node.js 中使用 mongodb,我TypeError: Promise is not a constructor这条线上遇到了。我已经追溯了一点,我可以看到在这条线上,topology.s.promiseLibrary是未定义的。我不知道我能做些什么来造成这种情况。我的理解是即使我没有连接 bluebird 或类似的东西,mongodb 也只会使用内置的 ES6 Promise。

奇怪的是,topology.s.options.promiseLibrary 定义了。我不确定我是否做错了配置它。我没有更改我的代码(我已经恢复到以前工作的代码)。我的节点版本是 v9.2.0。我的 Mongodb 是 3.10.0。我的 gridfs-stream 是 1.1.1。

如果我注释掉这一行,那么一切正常。

const Promise = topology.s.promiseLibrary;

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

4

2 回答 2

0

不知何故,我的 mongodb 实际上设置为 3.1.0-beta4 ,这似乎导致了这个问题。

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

于 2018-06-22T14:17:41.617 回答
0

我停止使用 bluebird 作为我的 Promise 库,转而使用内置的 ES6 Promise 库,现在异常已经消失。我不知道为什么我不能使用蓝鸟。它一直在工作,然后本周突然:

改变了

mongoose.Promise = require('bluebird');

mongoose.Promise = Promise;
于 2018-06-12T20:19:51.000 回答