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;