Node.js объект не является функцией - module.exports

У меня есть модуль, который я создал для приложения node.js. Приложение также использует socket.io, и я хочу передать объект socket.io в объект аукциона, когда я его создаю.

Это работает, когда я делаю это за пределами Node, но внутри я получаю, что объект "ошибка не является функцией" - я думаю, что это связано с модулем. Экспорт, но я уверен, что это будет.

Любые предложения были бы замечательными - спасибо!

auction.js

var Auction = function(socket) {
    this.data      = [];
    this.timer     = null;
    this.socket    = socket;
}

Auction.prototype = {

    add: function(auction) {
        this.data.push(auction);
    }
}


module.exports.Auction = Auction;

server.js:

var  Auction          = require('./lib/auction');

var auctions = new Auction(socket);

Ошибка: TypeError: объект не является функцией     в Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)

Ответы

Ответ 1

Вы экспортируете объект с 1 свойством Auction

Когда вам нужен модуль, вы импортируете объект, который выглядит как

{
  Auction: function(){...}// Auction function
}

Так что либо экспортируйте только функцию:

module.exports = Auction;

или ссылайтесь на свойство, когда требуется модуль:

var  Auction = require('./lib/auction').Auction;

По умолчанию module.exports - пустой объект: {}

Вы можете заменить exports на функцию. Это будет экспортировать только эту функцию.

Или вы можете экспортировать многие функции, переменные, объекты, назначив их exports. Это то, что вы сделали в своем вопросе: присваиваете function Auction свойству Auction exports.