2013-07-09 12 views
9

कहीं भी इस पर कोई लेख नहीं दिख रहा है। मैं मूल रूप से प्रोग्राम के भीतर से "मॉड्यूल नहीं ढूंढ सकता" त्रुटि को पकड़ना चाहता हूं, और वैकल्पिक रूप से इसे इंस्टॉल करने के लिए कहता हूं, लेकिन मुझे अपने आवश्यक विवरणों के चारों ओर कोशिश/पकड़ने के साथ भी कोई त्रुटि नहीं लगती है। क्या यह भी संभव है? मैंने इसे कहीं भी नहीं देखा है।node.js में मॉड्यूल की आवश्यकता पर एक त्रुटि पकड़ें

उदाहरण के लिए:

try { 
    var express = require('express'); 
} catch (err){ 
    console.log("Express is not installed."); 
    //proceed to ask if they would like to install, or quit. 
    //command to run npm install 
} 

मैं इस एक अलग .js स्टार्टअप फ़ाइल के साथ किसी भी 3 पार्टी की आवश्यकता के बिना किया जा सकता है, और बस node_modules के लिए जाँच करने fs का उपयोग करता है, और फिर वैकल्पिक रूप से बच्चे की प्रक्रिया से npm install चलाता है लगता है , फिर node app दूसरे बच्चे के साथ चलाता है। लेकिन ऐसा लगता है कि यह एक ऐप.जेएस फ़ाइल

+1

'require' ही यह है कि पता चलता है ऐप चलाने के लिए मॉड्यूल आवश्यक है। यदि आप मुझसे पूछें तो 'मॉड्यूल नहीं मिल रहा है' एक आत्म-व्याख्यात्मक गलती संदेश है। एक डेवलपर के रूप में यदि आप दूसरों को अपने ऐप का उपयोग करना चाहते हैं तो सभी निर्भरताओं को अपने पैकेज में शामिल करना आपकी ज़िम्मेदारी है। – Amberlamps

+1

@Amberlamps आमतौर पर पैकेज के हिस्से के रूप में ऐप को निर्भरता प्रदान नहीं करना बेहतर होता है, लेकिन उपयोग के समय उन्हें डाउनलोड किया जाता है। इसलिए कि पुरानी/पुरानी मॉड्यूल प्रदान न करें, और अंतरिक्ष बर्बाद न करें। यही 'package.json' और 'npm install' का उद्देश्य है। इस समाधान के लिए मेरा शिकार उपयोगकर्ता के अनुकूल और जितना संभव हो सके स्वचालित रूप से मेरे ऐप को बनाने के लिए है। – krb686

उत्तर

6

के साथ ऐसा करना आसान होगा जैसा कि आपके पास है, यह मेरे लिए ठीक काम करता है। क्या आपको यकीन है कि फाइल सिस्टम में कहीं भी node_modules/express फ़ोल्डर नहीं है जिसके लिए आवश्यकता है? क्या हो रहा है के बारे में स्पष्ट होना ऐसा करने का प्रयास करें: दिया मॉड्यूल के लिए

try { 
    var express = require('express'); 
    console.log("Express required with no problems", express); 
} catch (err){ 
    console.log("Express is not installed."); 
    //proceed to ask if they would like to install, or quit. 
    //command to run npm install 
} 
+0

मुझे नहीं पता कि मैंने इसे कैसे गड़बड़ कर दिया, लेकिन मैंने node_modules फ़ोल्डर को हटा दिया और ऐसा लगता है कि यह अभी ठीक काम कर रहा है। धन्यवाद। मैं इसे पुनः प्रयास करने और इसे ठीक करने के लिए प्रेरित करने के लिए आपका उत्तर स्वीकार करूंगा। – krb686

16

यह सही, यह सुनिश्चित कर लें बनाने के केवल मॉड्यूल को पकड़ने के लिए नहीं मिला त्रुटि:

try { 
    var express = require('express'); 
} catch (e) { 
    if (e.code !== 'MODULE_NOT_FOUND') { 
     // Re-throw not "Module not found" errors 
     throw e; 
    } 
    if (e.message.indexOf('\'express\'') === -1) { 
     // Re-throw not found errors for other modules 
     throw e; 
    } 

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