Node.js对象不是一个函数 – module.exports

我有一个为node.js应用程序创build的模块。 该应用程序还使用socket.io,我想在创build它时将socket.io对象传递给拍卖对象。

这在我在Node外部工作时,但在里面,我得到的错误'对象不是一个函数' – 我的猜测是它与module.exports有关,但我相信它会是什么。

任何build议将是真棒 – 谢谢!

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不是Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR(native)处的函数

您正在导出一个物业Auction的对象

当你需要这个模块时,你导入了一个看起来像的对象

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

所以要么导出只是function:

 module.exports = Auction; 

或者在需要模块时引用属性:

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

默认情况下,module.exports是一个空对象: {}

您可以使用函数replaceexports 。 这将只导出该function。

或者你可以导出许多函数,variables,对象,把它们分配给exports 。 这就是你在你的问题中所做的:将function Auction分配给exports function Auction的属性。