2013-08-06 14 views
7

मेरा package.json इस तरह दिखता है (नाम/विवरण/आदि छोड़ा गया)।एनपीएम इंस्टॉल सभी निर्भरताओं को प्रतीत नहीं होता है

{ 
    "dependencies": { 
     "express": "3.3.4", 
     "jade": "0.34.x", 
     "mongoose": "3.6.x" 
    }, 
    "devDependencies": { 
     "vows": "0.7.x" 
    } 
} 

मैं भंडार पर express का इस्तेमाल किया और भाग गया स्वत: जनरेट node app.js। यह काम करता था, लेकिन जब मैंने curl http://localhost:port का उपयोग किया तो मुझे त्रुटि मिली "मॉड्यूल कैरेक्टर-पार्सर नहीं मिल सका।" मैं npm install character-parser चला गया और फिर मुझे "मॉड्यूल ट्रांसफार्मर नहीं मिल सका।" यह कुछ और बार हुआ, लेकिन जब मैंने उन सभी को स्थापित किया, तो ऐप ने काम करना शुरू कर दिया।

मैंने सोचा कि npm install निर्भरता को आवर्ती रूप से स्थापित करना था। यह मुझे भी चिंतित करता है क्योंकि ऐप तैनात होने पर मुझे स्पष्ट रूप से package.json उपयोग करने योग्य होना चाहिए।

+0

लेकिन एनपीएम रिकर्सिवली इंस्टॉल करता है। 'Npm install' चलाने के बाद, क्या कोई त्रुटि है? अगर ऐसा है तो कृपया उन्हें पोस्ट करें। – gustavohenke

+0

@gustavohenke कोई त्रुटि नहीं, दुर्भाग्य से। यह कहता है कि सबकुछ ठीक है, लेकिन फिर जब मैं नोड चलाने की कोशिश करता हूं तो मुझे अनुपलब्ध मॉड्यूल त्रुटि मिलती है जब तक कि मैं 'npm इंस्टॉल ' का उपयोग नहीं करता। क्या मुझे शायद 'सुडो एनपीएम' का उपयोग करने की ज़रूरत है? –

+1

क्या आपके पास npm-shrinkwrap.json है? यदि आप करते हैं, तो जांचें कि आवश्यक मॉड्यूल सूचीबद्ध हैं। – Fluffy

उत्तर

-1

जब आप npm install <name-of-package> चलाते हैं तो यह आपके node_modules फ़ोल्डर में पैकेज स्थापित करेगा, लेकिन इसे निर्भरता के रूप में नहीं जोड़ देगा। आदेश पैकेज स्थापित करने और अपने package.json में एक निर्भरता के रूप में यह बचाने के लिए, तुम इतनी तरह --save ध्वज का उपयोग करना चाहिए:

npm install <name-of-package> --save

npm documentation कि --save-dev रूप में इस तरह इस्तेमाल किया जा सकता अतिरिक्त झंडे पर आगे की जानकारी प्रदान करता है विकास निर्भरताओं को बचाने के लिए ध्वज और --save-optional अपने package.json पर वैकल्पिक निर्भरताओं को सहेजने के लिए ध्वज।

2

यहाँ ./node_modules में निर्भरता इकट्ठा करने के लिए एक सरल स्क्रिप्ट है: आप करने के लिए याद है

"progress": "0.1.0", 
"request": "2.11.4", 

:

var fs = require("fs"); 

function main() { 
    fs.readdir("./node_modules", function (err, dirs) { 
    if (err) { 
     console.log(err); 
     return; 
    } 
    dirs.forEach(function(dir){ 
     if (dir.indexOf(".") !== 0) { 
     var packageJsonFile = "./node_modules/" + dir + "/package.json"; 
     if (fs.existsSync(packageJsonFile)) { 
      fs.readFile(packageJsonFile, function (err, data) { 
      if (err) { 
       console.log(err); 
      } 
      else { 
       var json = JSON.parse(data); 
       console.log('"'+json.name+'": "' + json.version + '",'); 
      } 
      }); 
     } 
     } 
    }); 

    }); 
} 

एक परियोजना के लिए मैं पर काम कर रहा हूँ, उत्पादन इस तरह दिखता है अंतिम प्रविष्टि से कॉमा को हटा दें, आप आउटपुट कॉपी और पेस्ट कर सकते हैं।

1

मैं जब मैं NPM https://github.com/HenrikJoreteg/humanjs-sample-app/

मैं एक Windows मशीन पर कर रहा हूँ के लिए स्थापित करने गया था इस सटीक त्रुटि मिली, तो मैं शक था कि यह विंडोज एक में वर्णों की संख्या पर है कि अजीब प्रतिबंधों के साथ एक मुद्दा था फ़ाइल पथ।

मैंने अपनी रूट में तीन वर्ण फ़ोल्डर नाम के लिए अपना मूल पथ छोटा करके इसे हल किया (इस मामले में सी: \ परियोजनाओं \ humanjs-sample-app से c: \ hjs तक जा रहा है)। जब मैं फिर से भाग गया एनपीएम सब कुछ काम किया। मैं उस संकल्प से खुश नहीं हूं। मुझे अपने बेस पथ नाम के बारे में चिंता करने की ज़रूरत नहीं है। यह उन कारणों में से एक है जो लोग अक्सर विंडोज मशीनों पर नोड विकास नहीं करते हैं।

लिनक्स या मैक पर एक वैकल्पिक संकल्प विकसित करना है, यदि आप पहले से नहीं हैं। शायद यह मेरी लंबी अवधि की रणनीति है।

+0

मैंने अभी देखा है कि आपके प्रश्न पर उबंटू टैग है, इसलिए यह आपकी समस्या नहीं हो सकती है। मैं इसे हटा नहीं दूंगा, हालांकि, बस मामले में। – PureCognition

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