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
.