2011-10-13 10 views
55

यहाँ मेरा पूरा त्रुटि है:त्रुटि: मॉड्यूल 'EJS' नहीं मिला

Error: Cannot find module 'ejs' 
    at Function._resolveFilename (module.js:317:11) 
    at Function._load (module.js:262:25) 
    at require (module.js:346:19) 
    at View.templateEngine (/Users/shamoon/local/node/lib/node_modules/express/lib/view/view.js:133:38) 
    at Function.compile (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:65:17) 
    at ServerResponse._render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:414:18) 
    at ServerResponse.render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:315:17) 
    at /Users/shamoon/Sites/soldhere.in/app.js:26:7 
    at callbacks (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:272:11) 
    at param (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:246:11) 

मेरे स्रोत कोड भी बहुत सरल है:

var express = require('express'); 

var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function(){ 
    app.use(express.bodyParser()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 

app.set('view engine', 'ejs'); 
app.set('view options', { 
    layout: false 
}); 

app.get('/', function(req, res) { 
    res.render('index', { 
    message : 'De groeten' 
    }); 
}); 

app.listen(3000); 
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 

मेरी फ़ोल्डर में, मैं node_modules में स्थापित EJS है जो मुझे npm install ejs का उपयोग करना पड़ा। enter image description here तो मेरा सवाल है .. क्या देता है? मैं गलत क्या कर रहा हूं ताकि जब मैं इसे स्पष्ट रूप से स्थापित कर दूं तो नोड ईजेएस नहीं ढूंढ सकता?

धन्यवाद

+0

क्षमा करें लेकिन lol @ message: 'de groeten' – Rob

+1

क्या आपने वैश्विक रूप से एक्सप्रेस स्थापित किया है? अगर मुझे सही ढंग से याद है तो वैश्विक स्तर पर एक्सप्रेस इंस्टॉल करते समय मुझे स्थानीय समस्याएं थीं। वैश्विक मॉड्यूल फ़ोल्डर में अपने प्रोजेक्ट फ़ोल्डर या ईजे में एक्सप्रेस इंस्टॉल करने का प्रयास करें। – pkyeck

उत्तर

87

मैं कुछ दिनों के पहले इस सटीक एक ही समस्या थी और यह पता लगा नहीं कर सका। समस्या को ठीक से ठीक करने में कामयाब नहीं रहा है लेकिन यह एक अस्थायी फिक्स के रूप में काम करता है:

एक स्तर (ऊपर app.js) ऊपर जाएं और npm install ejs करें। यह एक नया नोड_मोड्यूल फ़ोल्डर बनाएगा और एक्सप्रेस को तब मॉड्यूल मिलना चाहिए।

+7

'npm इंस्टॉल ejs -g' एक क्लीनर वर्कअराउंड हो सकता है। (वैश्विक इंस्टॉल के लिए '-g') –

+3

मैंने -जी चीज की है और इसे अभी भी नहीं मिल रहा है .. – BigOmega

+1

ओपनशेफ्ट पर मेरे ऐप को तैनात करते समय, मुझे एक ही त्रुटि हुई और मैंने देखा कि मैं 'ejs पर निर्भरता जोड़ना भूल गया था 'packages.json' में। अब यह ठीक काम करता है ('npm install' अगले पुनरारंभ के दौरान स्वचालित रूप से किया गया था)। –

7

मुझे एक ही समस्या थी। एक बार जब मैं अपने मॉड्यूल के स्थान पर पर्यावरण चर NODE_PATH सेट करता हूं (/usr/local/node-v0.8.4/node_modules मेरे मामले में) समस्या दूर हो गई। अनुलेख यदि आपको एक से अधिक निर्दिष्ट करने की आवश्यकता है तो NODE_PATH निर्देशिकाओं की एक कोलन पृथक सूची स्वीकार करता है।

+0

यह बहुत महत्वपूर्ण है और अक्सर याद किया जाता है, आपको पीट के लिए +1! – javabeangrinder

+1

मेरे पास कोई NODE_PATH env var नहीं था, इसलिए एक सरल 'निर्यात NODE_PATH = .' ने मेरे प्रोजेक्ट के लिए काम किया जिसकी निर्भरता अपनी निर्देशिका के तहत है। चीयर्स – Greg

2

मुझे यह समस्या थी। मैंने नोड-इंस्पेक्टर का उपयोग करके डीबग किया और देखा कि node_modules फ़ोल्डर से जहां एक्सप्रेस स्रोत फ़ाइलें थीं, ejs स्थापित नहीं था। तो मैंने इसे वहां स्थापित किया और यह काम किया।

npm install -g ejs ने इसे नहीं रखा जहां मुझे उम्मीद थी कि NODE_PATH को उसी नोड_मोड्यूल फ़ोल्डर में सेट किया जा रहा है। यह गलत कर रहा है, बस नोड के साथ शुरू किया।

14

इंस्टॉल व्यक्त स्थानीय स्तर पर

(npm install express जबकि परियोजना के रूट निर्देशिका में)


आपका परियोजना, express और ejs दोनों पर निर्भर करता है, ताकि आप उन्हें दोनों अपने package.json में निर्भरता के रूप में सूचीबद्ध करना चाहिए।

इस तरह जब आप परियोजना निर्देशिका में npm install चलाने के लिए, यह दोनों express और ejs स्थापित होगा, ताकि var express = require('express')स्थानीय एक्सप्रेस (जो ejs मॉड्यूल है कि आप स्थानीय स्तर पर स्थापित के बारे में जानता) की स्थापना के लिए किया जाएगा के बजाय वैश्विक एक, जो नहीं करता है।

सामान्य रूप से आपके package.json में सभी निर्भरताओं को स्पष्ट रूप से सूचीबद्ध करना एक अच्छा विचार है, भले ही उनमें से कुछ पहले ही वैश्विक स्तर पर स्थापित हो जाएं, इसलिए आपके पास इन प्रकार के मुद्दे नहीं हैं।

4

मैंने ejs को npm install ejs का उपयोग कर निर्देशिका निर्देशिका स्तर में स्थापित किया और इससे मेरी समस्या हल हो गई।

मैं चरणों एक्सप्रेस गाइड में उल्लेख http://expressjs.com/guide.html

4

मैं अपने मामले, मैं सिर्फ EJS मैन्युअल पैकेज में जोड़ा का उपयोग कर एक्सप्रेस स्थापित की है।json:

{ 
    "name": "myApp" 
    "dependencies": { 
    "express": "^4.12.2", 
    "ejs": "^1.0.0" 
    } 
} 

और चलाने NPM स्थापित (हो सकता है आप sudo साथ इसे चलाने की जरूरत है) कृपया ध्यान दें कि EJS डिफ़ॉल्ट रूप से देखा गया निर्देशिका लग रहा है

1

मैं एक ही मुद्दा है इसे हल मेरी परियोजना निर्देशिका में एक्सप्रेस स्थापित करने के बाद। पहले मैं इसे एनपीएम इंस्टॉल कमांड के साथ -g विकल्प के साथ वैश्विक दायरे में स्थापित करता हूं।

3

मैं दोनों स्थापित: एक्सप्रेस और विकल्प --save साथ EJS:

NPM EJS --save NPM स्थापित एक्सप्रेस --save

इस तरह एक्सप्रेस स्थापित करने और EJS dependecies package.json फ़ाइल हैं ।

0

मेरे मामले में यह एक बेवकूफ गलती थी- यह मिडलवेयर में एक टाइपो था। मैंने app.set('view engine', 'ejs.'); लिखा था, डॉट ने त्रुटि उत्पन्न की। मैं EJS स्थापित किया है और स्थानीय स्तर पर

2

कदम 1

व्यक्त करता है, तो आप पहले से ही अपनी परियोजना के लिए ejsdependency जोड़ लिया है की जाँच करने के लिए अपने परियोजना के रूट स्तर पर npm ls | grep ejs देखें।

यदि नहीं, तो इसे अपनी परियोजना में dependencies के रूप में जोड़ें। (मैं package.json बजाय npm install को निर्भरता को जोड़ने पसंद करते हैं मॉड्यूल ing।)

जैसे।

{                          
    "name": "musicpedia",                     
    "version": "0.0.0",                     
    "private": true,                      
    "scripts": {                       
    "start": "node ./bin/www"                   
    },                         
    "dependencies": {                      
    "body-parser": "~1.15.1",                   
    "cookie-parser": "~1.4.3",                   
    "debug": "~2.2.0",                     
    "express": "~4.13.4",                    
    "jade": "~1.11.0",                     
    "ejs": "^1.0.0",                                        
    "morgan": "~1.7.0",                     
    "serve-favicon": "~2.3.0"                   
    }                          
} 

कदम 2 डाउनलोड निर्भरता

npm install 

कदम 3 की जांच EJS मॉड्यूल

$ npm ls | grep ejs 
[email protected] /Users/prayagupd/nodejs-fkers/musicpedia 
├── [email protected] 
+0

ग्रेट! उपर्युक्त सभी ने किया, लेकिन फिर से एनपीएम स्थापित नहीं किया। धन्यवाद। –

+0

क्या आप कह रहे हैं कि 'npm इंस्टॉल' 'ejs" जोड़ने के बाद काम नहीं किया: "^ 1.0.0" '? यदि ऐसा है, तो उस पंक्ति को हटाएं और 'npm इंस्टॉल ejs' के रूप में एक और तरीका स्थापित करें - https://www.npmjs.com/package/ejs। इसे पैकेज 'json – prayagupd

+1

पर' ejs: नवीनतम संस्करण 'जोड़ना चाहिए, मेरा मतलब था कि यह बहुत अच्छा काम करता था। धन्यवाद। –

0
app.set('view engine', 'ejs') 

और फिर टर्मिनल

में
npm install ejs --save 

समस्या का समाधान

1

मेरे मामले में कोई मूर्ख वाक्य रचना त्रुटि थी, लेकिन एक ही त्रुटि arised। मैंने वैश्विक स्तर पर ejs और ejs-mate इंस्टॉल किया था। मैंने इसे स्थानीय रूप से स्थापित किया और मेरी त्रुटि हल हो गई।

0

कृपया सुनिश्चित करें कि आपकी पैकेज.जेसन फाइलों में आपकी निर्भरता अद्यतित है। यह सुनिश्चित करने के बाद कि आपका एनपीएम नवीनतम संस्करण (अद्यतित) है, एक बार में उन्हें एक बार फिर से इंस्टॉल करने का प्रयास करें। यह मेरे लिए काम किया। मैं आपको पैकेज के लिए npm install चलाने की सलाह देता हूं (जो काम करने से इनकार करने के बाद मेरे अपने मामले में काम करता है क्योंकि मैंने निर्भरता को मैन्युअल रूप से जोड़ा है)।

2

इसे वैश्विक रूप से स्थापित करने के बजाय इसे स्थानीय रूप से इंस्टॉल करें। फिर आपकी परियोजना किसी भी मशीन पर बिना किसी त्रुटि के चल सकती है। मुझे लगता है कि यह बेहतर है।

npm install express --save 
npm install ejs --save 
0

NPM फिर से स्थापित करने, एक्सप्रेस और EJS मेरी समस्या का समाधान होने

यह एक मेरे लिए काम किया,

  1. अपने टर्मिनल या cmd पर -> अपने एप्लिकेशन निर्देशिका पर जाएँ,
  2. सीडी pathtoyourapp/AppName
  3. अपने 'एनपीएम इंस्टॉल' को फिर से चालू करें
  4. अपने 'एनपीएम इंस्टॉल एक्सप्रेस' को दोबारा शुरू करें
  5. को फिर से चलाएं अपने 'NPM स्थापित EJS'

उसके बाद, त्रुटि तय हुई थी।