我有一个为node.js应用程序创建的模块。该应用程序还使用socket.io,我想在创建它时将socket.io对象传递给拍卖对象。
当我在Node外部执行此操作时,此方法起作用,但在内部,出现错误“对象不是函数”-我的猜测是它与module.exports有关,但我确定它会是什么。
任何建议都很棒-谢谢!
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);
最佳答案
您正在导出具有1个属性Auction
的对象
当您需要该模块时,您导入了一个看起来像
{
Auction: function(){...}// Auction function
}
因此,要么只导出函数:
module.exports = Auction;
或在需要模块时引用该属性:
var Auction = require('./lib/auction').Auction;
默认情况下,module.exports是一个空对象:
{}
您可以将
exports
替换为函数。这将仅导出该功能。或者,您可以通过将许多函数,变量,对象分配给
exports
来导出它们。这是您在问题中所做的事情:将function Auction
分配给Auction
的属性exports
。