mongodb topology.s.promiseLibrary не определен - PullRequest
0 голосов
/ 12 июня 2018

Я использую mongodb в node.js с Gridfs, и я сталкиваюсь с TypeError: Promise is not a constructor на этой строке .Я немного проследил это и вижу, что на эта строка , topology.s.promiseLibrary не определена.Я не знаю, что я мог сделать, чтобы вызвать это.Насколько я понимаю, mongodb будет просто использовать встроенный ES6 Promise, даже если я не подключу bluebird или что-то в этом роде.

Любопытно, что topology.s.options.promiseLibrary определяется .Я не уверен, что что-то сделал не так, чтобы настроить его.Я не изменил свой код (я вернулся к коду, который работал раньше).Моя версия узла v9.2.0.Мой Mongodb является 3.10.0.Мой gridfs-поток - 1.1.1.

Если я закомментирую эту строку , тогда все будет нормально.

const Promise = topology.s.promiseLibrary;

Это ошибка?В чем может быть причина?Кажется, что может быть внешняя причина, но я не уверен, где продолжить мой поиск.Как topology.s.promiseLibrary должен быть настроен?Почему это не определено?

Ответы [ 2 ]

0 голосов
/ 22 июня 2018

Каким-то образом мой mongodb на самом деле был настроен на 3.1.0-бета4, и это, кажется, вызвало эту проблему.

Я закрепил mongodb на 2.2.34, и все в порядке.

0 голосов
/ 12 июня 2018

Я прекратил использовать bluebird для своей библиотеки обещаний в пользу использования встроенной библиотеки ES6 Promise, и теперь исключение исчезло.У меня нет идеи, почему я не могу использовать синюю птицу.Это работало вечно, а потом вдруг на этой неделе: Нет .

Изменено

mongoose.Promise = require('bluebird');

на

mongoose.Promise = Promise;
...