mongodb topology.s.promiseLibrary не определен

Я использую 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 ответа

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

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

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

Изменено

mongoose.Promise = require('bluebird');

в

mongoose.Promise = Promise;
Другие вопросы по тегам