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
的属性。