I have a module I created for a node.js app. The app also uses socket.io and I want to pass the socket.io object into the auction object when I create it.
This works when I do it outside of Node, but inside, I get the error 'object is not a function' - my guess is it has to do with the module.exports, but I'm sure what it would be.
Any suggestions would be awesome - thank you!
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);
Error: TypeError: object is not a function at Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)
You are exporting an object with 1 property
Auction
When you required the module, you imported an object which looks like
So either export just the function:
or reference the property when you require the module:
By default, module.exports is an empty object :
{}
You can replace
exports
with a function. This will export just that function.Or you can export many functions, variables, objects, by assigning them to
exports
. This is what you have done in your question: assigned thefunction Auction
to the propertyAuction
ofexports
.