2012-03-27 9 views
14

मेरे पास एक मॉड्यूल है जिसे मैंने node.js ऐप के लिए बनाया है। ऐप socket.io का भी उपयोग करता है और जब मैं इसे बनाता हूं तो मैं socket.io ऑब्जेक्ट को नीलामी ऑब्जेक्ट में पास करना चाहता हूं।Node.js ऑब्जेक्ट फ़ंक्शन नहीं है - 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); 

Error: TypeError: object is not a function at Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)

उत्तर

34

आप 1 संपत्ति Auction

के साथ एक वस्तु निर्यात कर रहे हैं जब आप मॉड्यूल की आवश्यकता है, तो आप आयातित एक ऑब्जेक्ट जो

जैसा दिखता है
{ 
    Auction: function(){...}// Auction function 
} 

तो या तो निर्यात सिर्फ समारोह:

module.exports = Auction; 

या संपत्ति को संदर्भित जब आप मॉड्यूल की आवश्यकता होती है: {}

:

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

डिफ़ॉल्ट रूप से, module.exports एक खाली वस्तु है

आप फ़ंक्शन के साथ exports को प्रतिस्थापित कर सकते हैं। यह सिर्फ उस समारोह को निर्यात करेगा।

या आप exports पर उन्हें सौंपकर कई फ़ंक्शन, चर, ऑब्जेक्ट्स निर्यात कर सकते हैं। आपने अपने प्रश्न में यह किया है: की Auction पर function Auction असाइन किया गया।

+1

बिल्कुल सही - धन्यवाद! – dzm

+2

मेरे लिए यह केवल तभी काम करता है जब मुझे आवश्यकता होती है ('./ lib/नीलामी')। नीलामी(); 'कोष्ठक के साथ, कोई विचार क्यों? –

संबंधित मुद्दे