2011-06-24 25 views
8

मुझे लगता है कि मैं कुछ बहुत ही यहाँ बुनियादी याद कर रहा हूँ में एक NPM मॉड्यूल की आवश्यकता होती है मदद ...Node.js

तो मैं npm install somelib के साथ एक NPM पुस्तकालय स्थापित करें। और जो मैंने पढ़ा है, उससे मुझे

var somelib = require('somelib'); 

लेकिन यह कुछ भी ढूंढने में विफल रहता है। मेरे पास मेरे ऐप की रूट पर node_modules निर्देशिका है, लेकिन ऐसा लगता है कि इसे चुनना प्रतीत नहीं होता है।

मैंने require.paths.push('node_modules') की कोशिश की लेकिन यह मदद नहीं करता है।

require.paths.unshift('.'); 
var somelib = require('node_modules/somelib/lib/somelib'); 

मुझे इस तरह लगता है कौन सा कहीं अधिक काम की तुलना में मैं वास्तव में एक NPM पुस्तकालय लोड करने के लिए क्या करने की जरूरत है: केवल एक चीज है काम करने के लिए लगता है कि इस है। मुझसे यहां क्या गलत हो रहा है? मैंने सोचा था कि ऐप में मॉड्यूल स्थापित करने का मतलब है कि मुझे पर्यावरण चर या पथ के साथ बहुत कुछ नहीं करना पड़ेगा?

+0

आप क्या इंस्टॉल करने का प्रयास कर रहे हैं? क्या मंच? – tjameson

+0

हां, आप सही हैं। आपका पहला उदाहरण यह है कि इसे कैसे काम करना चाहिए। क्या आप एनपीएम 1.0 का उपयोग कर रहे हैं? – Magnar

+1

यह संभव है कि पैकेज 'somelib' में' somelib' नाम की फ़ाइल नहीं है। यह भी संभव है कि स्थापना गलत कॉन्फ़िगर किया गया हो। – Amadan

उत्तर

1

"somelib" के बजाय विशिष्ट मॉड्यूल नाम होने से मदद मिल सकती है ... लेकिन पैकेज की package.json फ़ाइल की जांच करें। require.paths प्रदर्शित करें और तुलना करें। के बारे में पढ़ें नोड के module system

4

ऐसा नहीं है कि somelib एक main फ़ाइल या उनके package.json में परिभाषित इसे गलत तरीके से संदर्भित है कि नहीं है संभव है। यदि somelib में main नहीं है लेकिन इसमें directories.lib है तो आप इसके बजाय require('somelib/thefile.js') कर सकते हैं।

यदि somelib कॉफ़ीस्क्रिप्ट में लिखा गया है और आपका ऐप नहीं है, तो आपको पहले require('coffee-script') की आवश्यकता होगी।

अद्यतन:js2coffee के रूप में कॉफ़ीस्क्रिप्ट है, मैं आपके साथ बाद में करने की आवश्यकता है।

+0

क्या एक सर्वर में सभी एनपीएम मॉड्यूल की आवश्यकता है। जेएस फाइल ... या हमें अलग फाइलें बनाना है .... सबसे अच्छा अभ्यास क्या है। :) –