त्रुटि: मॉड्यूल 'ejs' नहीं ढूँढ सकता


85

यहाँ मेरी पूरी त्रुटि है:

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);

मेरे फ़ोल्डर में, मेरे पास नोड_मॉड्यूल में स्थापित ईजेएस हैं जो मुझे उपयोग कर रहे हैं npm install ejsयहाँ छवि विवरण दर्ज करेंतो मेरा सवाल है .. क्या देता है? जब मैं स्पष्ट रूप से इसे स्थापित कर लेता हूं तो मैं क्या गलत कर रहा हूं ताकि नोड को ईजेएस न मिले?

धन्यवाद


क्षमा करें, लेकिन lol @ संदेश: 'डी ग्रोटन'
रोब

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

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

जवाबों:


149

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

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


15
npm install ejs -gएक क्लीनर वर्कअराउंड हो सकता है। ( -gवैश्विक संस्थापन के लिए)
फरजेर

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

1
मुझे नहीं लगता कि आप node_moduleविश्व स्तर पर स्थापित करना चाहते हैं , मैंने पहले भी ऐसा ही किया है और जब आप तैनाती कर रहे हों तो यह एक दर्द बन जाता है

1
मैंने बस अपनी 'package.json' फ़ाइल में निर्भरता के रूप में 'एक्सप्रेस' मॉड्यूल को जोड़ा और यह काम करना शुरू कर दिया। इसलिए सुनिश्चित करें कि 'ईजे' और 'एक्सप्रेस' दोनों को निर्भरता के रूप में उल्लेख किया गया है।
प्रेटेक

जाहिर है, मैंने मुख्य उत्तर (एर) को उकेर दिया, लेकिन मैं (-जी) वैश्विक इंस्टॉल का सुझाव देने का श्रेय @ स्टेफेन बग्स कामेनर को भी देना चाहता था। मैंने वास्तव में धोखा दिया और दोनों (मुझे आलसी) किया और यह मेरे ऐप को पुनः आरंभ करने पर तुरंत काम किया।
श्री बेनेडिक्ट

22

स्थानीय स्तर पर एक्सप्रेस स्थापित करें

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


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

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

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


9

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


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

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

9

मेरा मामला है, मैंने अभी पैकेज में मैन्युअल रूप से ejs जोड़े हैं। json :

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

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


6

जिस तरह से मेरे साथ एक ही मुद्दा हुआ था।

JSON फ़ाइल में ejs के लिए निर्भरता थी, इसे स्थानीय और विश्व स्तर पर स्थापित करने की कोशिश की लेकिन काम नहीं किया।

फिर मैंने जो किया वह मॉड्यूल को मैन्युअल रूप से जोड़ रहा था:

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

app.engine('ejs', require('ejs').__express);

तब यह काम करता है।


यह विशेष रूप से सच है जब आपने
सबमॉड्यूल

यह वेब सर्वर के माध्यम से अपने सर्वर को संकलित करते समय (या बस बंडलिंग का उपयोग नहीं करने पर) बंडल करने पर खोज योग्य [ejs] बनाता है। (या तो दूर या आगे काम करने के लिए विचारों की नकल करने के लिए इसे काम करना आवश्यक है; हालांकि।)
डैनियल

5

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

मैंने एक्सप्रेस गाइड http://expressjs.com/guide.html में वर्णित चरणों का उपयोग करके एक्सप्रेस स्थापित किया है


4

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

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

3

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

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


3

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

npm स्थापित ejs - save npm संस्थापन एक्सप्रेस - save

इस तरह एक्सप्रेस और ej निर्भरता पैकेज हैं। json फ़ाइल।


3

Npm, एक्सप्रेस और ejs को पुनः स्थापित करने से मेरी समस्या ठीक हो गई

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

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

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


3

एक्सप्रेस वी xxx स्थापित करने के बाद आपको एक टेम्प्लेट व्यू-इंजन चुनना होगा। वास्तव में सीखने में बहुत आसान हैं। मेरा व्यक्तिगत जाना-जाना EJS है

अन्य वास्तव में महान और सीखना आसान हो सकता है:

EJS स्थापित करने के लिए (और अपनी त्रुटि को ठीक करें) अपनी परियोजना की जड़ में चलाएँ:

npm install ejs

या यदि आप यार्न का उपयोग कर रहे हैं:

yarn add ejs

अगला आपको मॉड्यूल की आवश्यकता होगी, इसलिए अपनी फ़ाइल खोलें जहां आपको एक्सप्रेस की आवश्यकता होती है (आमतौर पर app.js या server.js)

नीचे जोड़ें var express = require('express');

var ejs = require('ejs');

3

मुझे भी यही समस्या थी। इसलिए मैंने निम्नलिखित कार्य किया और यह मेरे लिए काम किया।

उपाय:

  1. "npm init" प्रोजेक्ट डायरेक्टरी में चलाएं यदि पहले से नहीं किया है।
  2. ejs स्थापित करें और निम्नानुसार व्यक्त करें:

npm स्थापित ejs - save
संस्थापन एक्सप्रेस - save

ऐसा करके यह package.json फ़ाइल में आवश्यक निर्भरता बनाता है


2

चरण 1

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

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

जैसे।

{                                                                                                      
  "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

STEP 3 चेक ईजेएस मॉड्यूल

$ npm ls | grep ejs
musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia
├── ejs@1.0.0

महान! क्या उपरोक्त सभी, लेकिन फिर से npm स्थापित नहीं चला। धन्यवाद।
एन ओसिल

क्या आप कह रहे हैं कि npm installजोड़ने के बाद काम नहीं किया "ejs": "^1.0.0"? यदि ऐसा है, तो उस लाइन को हटा दें और दूसरा तरीका स्थापित करें npm install ejs- npmjs.com/package/ejs । यह एक ejs: latest versionपैकेज को जोड़ना चाहिए ।
आगजनी

2

में निर्भरता जोड़ें package.jsonऔर फिर चलाएंnpm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}

2

मुझे लगता है कि ईजेएस टेम्पलेट इंजन आपकी मशीन पर ठीक से स्थापित नहीं है। आप बस npm का उपयोग करके टेम्पलेट इंजन स्थापित करें

npm install ejs --save

फिर app.js में निम्न कोड शामिल करें

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

1

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


1

मेरे मामले में मूर्खतापूर्ण वाक्यविन्यास त्रुटि नहीं थी, लेकिन वही त्रुटि उत्पन्न हुई। मैंने विश्व स्तर पर ईजेएस और ईजेएस-मेट स्थापित किया था। मैंने इसे स्थानीय स्तर पर स्थापित किया और अपनी त्रुटि को हल किया।


1

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


1

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


1

सुनिश्चित करें कि सभी निर्भरताएं स्थापित हैं। npm install

मैं अपने लिए एक त्वरित ऐप बना रहा था और मैं एक्सप्रेस जोड़ना भूल गया था। उपरोक्त त्रुटि को फेंक दिया।


1

मैं ईजेएस के लिए एक ही त्रुटि का सामना करता हूं, फिर मैं बस चलाता node install ejs हूं यह ईजेएस को फिर से स्थापित करेगा।

और फिर npm installफिर से node_modules को चलाने के लिए चलाएं। मेरे लिए यही काम है।


1

जब मैंने पहली बार अपना ऐप चलाया था, उससे पहले मैं ईजे इंस्टॉल करना भूल गया था, तो मैं इस समस्या में भाग गया। किसी कारणवश बाद में इसे स्थापित करने के बाद ईजे को नहीं देखा जा रहा था। मुझे इस समस्या का एक त्वरित, स्वच्छ और प्रभावी समाधान मिला, जो सर्वर को पुनरारंभ करने से पहले स्थानीय निर्देशिका में npm uninstall expressफिर से चलाकर एक्सप्रेस को पुनर्स्थापित करना था npm install express



0

मेरे मामले में, मैं अभी स्थापना रद्द करता हूं फिर ejs स्थापित करें।

npm uninstall ejs

फिर

npm install ejs

0

npm install ejs --saveमेरे लिए काम किया! ✅

GoormIDE पर, मेरे पास यह फ़ाइल कॉन्फ़िगरेशन था:

  • पात्र
    • main.js
    • package-lock.json
    • package.json
    • नोड_मॉड्यूल
    • विचारों
      • घर.जे.

मेरी main.js फ़ाइल में, मेरे पास यह मार्ग भी था

app.get("/", function(req, res){
res.render("home.ejs");
})

npm install ejs -gpackage.json के भीतर इसी निर्भरता नहीं जोड़ा। npm install ejs --saveकिया। मैंने कंटेनर निर्देशिका से कमांड लाइन निष्पादित की। मैन्युअल रूप से इसे package.json में जोड़ा जा सकता है: **

"dependencies": {
    "ejs": "^3.0.2",}

**



0

स्‍थानीय रूप से स्‍थापित एक्सप्रेस ने मेरी इसी समस्‍या को हल किया। npm i एक्सप्रेस - save


SO पर आपका स्वागत है! क्यों और कैसे? एक्सप्रेस स्थानीय रूप से विकास के लिए स्थापित है।
पीटर - मोनिका

0

मैं एक ही मुद्दा था और दिए गए समाधानों में से कुछ की कोशिश की, लेकिन यह अभी भी काम नहीं किया। सब मैंने किया था मेरी परियोजना के रूट फ़ोल्डर में "npx यार्न" कमांड चलाने के लिए और वह यह था।


-1

जब मैं goormIDE पर काम कर रहा था, तो त्रुटि आई। यह मूल रूप से तब होता है जब नोड पैकेज रनिंग फ़ाइल के अंदर आते हैं। वह स्थान जहाँ app.js या home.js निष्पादित होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.