Как уже предлагали другие, bind возвращает связанную функцию, которую вы можете вызвать, на самом деле она не вызывает функцию - это то, что делают .apply или .call. Решение @ ptdien несколько корректно, но оно не сработает, потому что вы забыли вернуть обещание, которое возвращает mongoose.connect, так что ваша функция connect возвращает undefined, так что вызывающей стороне ждать нечего. То есть вам нужно сделать это:
export default function connect({ mongoose: mongoose }, url) {
mongoose.Promise = global.Promise;
return mongoose.connect(url);
}
(Также обратите внимание, что я удалил ключевое слово async, поскольку в нем нет необходимости, когда мы не используем await - код уже возвращает обещание.
Кроме того, bind будет автоматически пересылать аргументы после связанных (т. Е. URL в этом случае), так что вы можете упростить свой код до следующего:
module.exports = require("./unbound").default.bind(
null,
{
mongoose: require("mongoose")
}
);
Кстати, причина, по которой вы должны добавить .default, заключается в том, что вы смешиваете node.js, требует и ES6 импортирует. Выберите один и придерживайтесь его.