2013-01-09 36 views
31

मैं अपने पहले node.js प्रोजेक्ट के माध्यम से जा रहा हूं। मैं MongoDB स्थापित किया है, एक server.js फ़ाइल है, और इसे चलाने के लिए जब मैं कोशिश मैं यह त्रुटिnode.js मॉड्यूल 'mongodb' नहीं मिला

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'mongodb' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:362:17) 
    at require (module.js:378:17) 

मैं काफी कुछ मैं स्थापित MongoDB है हूँ, मैं यूनिक्स एक सी # खिड़कियों से आ रही करने के लिए नया हूँ मिल पृष्ठभूमि, लेकिन मुझे लगता है कि यह एक रास्ता सही तरीके से कॉन्फ़िगर नहीं किया जा रहा है?

+2

क्या आपके पास अपनी प्रोजेक्ट निर्देशिका की रूट में 'package.json' है? क्या इसमें निर्भरता के रूप में सूचीबद्ध 'मोंगोडब' है? क्या आपको 'npm इंस्टॉल' याद आया? उस त्रुटि में कहा गया है कि नोड को 'mongodb' जावास्क्रिप्ट पैकेज नहीं मिला, मशीन पर mongodb सर्वर नहीं। –

उत्तर

54

आपको जो त्रुटि मिल रही है वह इंगित करता है कि मोंगोडीबी के लिए एनपीएम पैकेज सही ढंग से स्थापित नहीं है।

यहां तय करें कि आप एनपीएम का लाभ उठाने की योजना कैसे बनाते हैं। एनपीएम पैकेज मैनेजर के संचालन के दो अलग-अलग तरीके होते हैं: स्थानीय और वैश्विक।

पहला (और डिफ़ॉल्ट) मोड "स्थानीय" है।

यदि आप server.js वाले फ़ोल्डर में जाते हैं तो आपको node_modules नामक उप-फ़ोल्डर दिखाई देगा। उस फ़ोल्डर के तहत mongodb फ़ोल्डर होगा। यदि वह फ़ोल्डर मौजूद नहीं है, तो उस पथ पर mongodb मॉड्यूल स्थापित नहीं है।

इसे ठीक करने के लिए, cd उस फ़ोल्डर में और npm install mongodb टाइप करें। जब प्रक्रिया पूरी हो जाती है तो आपके पास node_modules/mongodb फ़ोल्डर उपलब्ध होना चाहिए।

आप npm install -g mongodb का उपयोग कर वैश्विक स्तर पर मोंगोडीबी पैकेज भी इंस्टॉल कर सकते हैं। यह उपयोगी है अगर आप बहुत सारे node.js कमांड लाइन सामग्री का उपयोग कर रहे हैं, लेकिन यदि आप पूरी चीज को तैनात कर रहे हैं तो कम उपयोगी।

साइड नोट: package.json के आसपास एक विकसित मानक है। package.json किसी दिए गए मॉड्यूल के लिए सभी निर्भरताओं को शामिल करने का एक मानकीकृत तरीका है। यह आपको प्रोजेक्ट/पैकेज की रूट पर npm update या npm install चलाने की अनुमति देता है और प्रभावी रूप से सभी निर्भरताओं को "खींच" देता है। यह तैनाती प्रक्रिया और आपकी निर्भरताओं को ऑनलाइन रखने की प्रक्रिया को बहुत सरल बनाता है।

+0

धन्यवाद, त्रुटि node_modules फ़ोल्डर में mongodb स्थापित नहीं कर रहा था। – Eddie

+35

यह उल्लेख करना महत्वपूर्ण है कि यदि आपने इसे वैश्विक रूप से इंस्टॉल किया है तो आपको इसका उपयोग करके लिंक करना होगा: 'npm लिंक mongodb' – meeDamian

+3

उहह हाँ यह * बहुत अधिक * उल्लेखनीय है। धन्यवाद चेस्टर, आपने मेरी समस्या तय की !! – Locohost

50

सफलता के बिना इसे स्थापित करने के लिए कुछ समय की कोशिश करने के बाद (क्योंकि मैं मोंगो और नोड के लिए नया हूं), मैं वास्तव में एनपीएम लिंक चरण खो रहा था।

  1. NPM स्थापित MongoDB जी
  2. सीडी/path/to/मेरी/ऐप्स/फ़ोल्डर
  3. NPM लिंक MongoDB
उस जगह में साथ

: तो बस संक्षेप में प्रस्तुत करने, मैं इस किया था , मैं इसे अपने आवेदन फ़ाइल में कर सकता हूं: ('mongodb') की आवश्यकता है।

यहाँ कुछ संदर्भ, स्थिति में आप उन्हें जरूरत है:

+2

यह भी मेरे लिए काम किया। +1 –

+2

यह वास्तविक जवाब है। – richb01

0

मैं MongoDB के लिए नया हूँ। एनपीएम के माध्यम से मोंगोडब स्थापित करने के घंटों खर्च करने के बाद, मुझे अंततः तस्वीर मिल गई।देखें, वहाँ वास्तव में कर रहे तीन "MongoDB" आप (मैं OSX उपयोग कर रहा हूँ) के साथ सौदा करने की जरूरत है:

1. ड्राइवर NodeJS में इस्तेमाल किया: है: var मोंगो = की आवश्यकता होती है ('/ usr/स्थानीय/lib/node_modules/MongoDB ')। या, आप लंबे पथ से बचने के लिए पहले पोस्ट द्वारा उल्लिखित "एनपीएम लिंक" का उपयोग कर सकते हैं। कमांड "npm install -g mongodb" mongodb ड्राइवर को/usr/local/lib के अंतर्गत स्थापित करता है (यह "-g" का अर्थ है)। इस आदमी को स्थापित करने के लिए घंटों और घंटे लग गए, पता नहीं क्यों, धीरज रखो!

2. mongodb उपयोगिताओं (यानी, यूनिक्स निष्पादन योग्य आदेश)। आप उन्हें http://www.mongodb.org/downloads से डाउनलोड करते हैं। इसमें mongod कमांड है जो आपको mongodb डेटाबेस शुरू करने की अनुमति देता है। तो मेरे/usr/local/bin में, मैंने एक प्रतीकात्मक लिंक बनाया, mongod, /usr/local/lib/node_modules/mongodb-osx-x86_64-2.6.7/bin/mongod पर इशारा करते हुए, इसलिए मैं कहीं से भी मोंगोड निष्पादित कर सकता हूं ।

3. mongodb डेटाबेस/डेटा/डीबी द्वारा इंगित किया गया। तो नीचे/डेटा, मैंने एक प्रतीकात्मक लिंक बनाया, डीबी,/उपयोगकर्ता/your_user_id/डेटाबेस/mongodb (या कहीं भी इसे रखना चाहते हैं) को इंगित करता है, जिसमें mongodb एक खाली निर्देशिका है जिसे आप mkdir के माध्यम से बना सकते हैं।

क्योंकि आपने ऊपर # 2 mongodb स्थापित किया है, इसलिए आप कमांड लाइन पर mongod निष्पादित कर सकते हैं, जो mongodb # 3 के अंतर्गत डेटाबेस बना और शुरू करेगा।

क्योंकि आपके पास npm द्वारा mongodb # 1 स्थापित है, इसलिए अब आप इसे अपने नोडजेएस प्रोग्राम में आवश्यकता कर सकते हैं।

काम किया!

0

मुझे एक ही समस्या मिली और मैं इन चरणों से हल करता हूं।

आपका परियोजना डिर को

1.Go। (सीडी अपने परियोजना पथ)

2.Run आदेश खोल में इस आदेश (स्थापित NPM)

3.Run अपने परियोजना (नोड उदाहरण के लिए app.js)

4

यह समस्या निम्न कारणों में से एक के कारण होती है।

1) आपने mongodb मॉड्यूल स्थापित नहीं किया है।

2) आपने वैश्विक संदर्भ में mongodb स्थापित किया है लेकिन वर्तमान एप्लिकेशन से लिंक नहीं है।

समाधान

1) आवेदन शीर्ष निर्देशिका के पार और NPM स्थापित MongoDB निष्पादित, इस MongoDB मॉड्यूल स्थापित हो जाएगा, और अपनी परियोजना के लिए स्वचालित रूप से इसका पता लगाया जाएगा।

या

2) NPM मोंगो डीबी मॉड्यूल विश्व स्तर पर और उसके बाद का उपयोग कर आदेश NPM लिंक MongoDB आदेश आवेदन शीर्ष निर्देशिका और लिंक करने के लिए Ttaverse स्थापित करने के लिए स्थापित MongoDB जी निष्पादित।

उपयोगी लिंक

http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

https://npmjs.org/doc/link.html

0

हो सकता है आप अन्य तो परियोजना path.I एक ही समस्या का सामना करना पड़ा है और नीचे दिए गए कुछ चरणों का पालन करके हल किया गया चलाने के लिए कोशिश कर रहे हैं।

1.) कमांड खोल "सीडी/परियोजना पथ" का उपयोग कर अपनी प्रोजेक्ट निर्देशिका पर जाएं।

2.) अब अपनी परियोजना चलाएं।

0

मेरी समस्या यह थी कि जब मैंने मूल रूप से अपना पैकेज.जेसन फ़ाइल बनाई, तो मैंने "संस्करण" कुंजी "1.0.0" के मान से मेल खाती थी। जब मैंने अपनी "निर्भरता" कुंजी के तहत उपयोग करना चाहते थे, तो संस्करण को प्रतिबिंबित करने के लिए इसे संस्करण मान में बदल दिया, तो मैंने त्रुटि से छुटकारा पा लिया। संभावित फिक्स के नीचे एक तस्वीर है। ध्यान दें कि "निर्भरता" मिलान के तहत "संस्करण" और "mongodb" कैसे मेल खाता है। नीचे दिए गए चरणों के साथ

1) स्थापित करें MongoDB विश्व स्तर पर: - -: enter image description here

3

आप इसे चलाने बनाने के लिए दो बातें या तो कर सकते हैं

क) npm install mongodb -g

ख) पर जाएं आपकी ऐप निर्देशिका, जहां module.js स्थित है और फिर

npm link mongodb

चलाएं

स्पष्टीकरण: - जब आप एनपीएम के माध्यम से वैश्विक रूप से एक पैकेज स्थापित करते हैं, तो यह वैश्विक node_module फ़ोल्डर में डाउनलोड किया जाता है। मेरे लिए (मैक उपयोगकर्ता), यह /usr/local/lib/node_modules/mongodb के अंतर्गत है। हम इसे उस निर्देशिका से लिंक करते हैं जहां से आप मॉड्यूल.जेएस चलाने की कोशिश कर रहे हैं। 'Module.js के तहत> MongoDB फ़ोल्डर -

2) एक और दृष्टिकोण नहीं के माध्यम से विश्व स्तर पर

npm install mongodb

इनमें से किसी का पालन करने के बाद आप node_modules को देख रहे होंगे स्थानीय स्तर पर MongoDB स्थापित करने के लिए, है 'निर्देशिका, जिसका अर्थ है कि mongodb सफलतापूर्वक स्थापित किया गया है।

0

त्रुटि

jamsheed-h110m-s2ph:~/project/jamsheed/meanStack/mean$ node server.js 
module.js:538 
    throw err; 
    ^
Error: Cannot find module 'mongodb' 
    at Function.Module._resolveFilename (module.js:536:15) 
    at Function.Module._load (module.js:466:25) 
    at Module.require (module.js:579:17) 
    at require (internal/module.js:11:18) 
    at Object.<anonymous> (/home/haseeb/project/jamsheed/meanStack/mean/server.js:3:13) 
    at Module._compile (module.js:635:30) 
    at Object.Module._extensions..js (module.js:646:10) 
    at Module.load (module.js:554:32) 
    at tryModuleLoad (module.js:497:12) 
    at Function.Module._load (module.js:489:3) 

हल

NPM MongoDB

संपादित package.json = "MongoDB" स्थापित: "^ 3.0.1", परिवर्तन "MongoDB" : "3.0.1",

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