Fehler: Modul 'ejs' kann nicht gefunden werden

82

Hier ist mein vollständiger Fehler:

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)

Mein Quellcode ist auch sehr einfach:

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

In meinem Ordner habe ich ejs in node_modules installiert, die ich verwendet habe npm install ejs. Geben Sie hier die Bildbeschreibung einalso meine frage ist .. was gibt? Was mache ich falsch, damit der Knoten EJS nicht findet, wenn ich es eindeutig installiert habe?

Vielen Dank

Shamoon
quelle
Sorry aber lol @ Nachricht: 'De groeten'
Rob
1
Haben Sie Express global installiert? Wenn ich mich richtig erinnere, hatte ich Probleme bei der Installation von Express global und EJS lokal. Versuchen Sie auch, Express in Ihrem Projektordner oder ejs im globalen Modulordner zu installieren.
Pkyeck
Ich hatte das gleiche Problem. Am Ende habe ich das Verzeichnis node_modules entfernt und eine Neuinstallation npm install -g durchgeführt.
Robert Walters

Antworten:

146

Ich hatte vor ein paar Tagen genau das gleiche Problem und konnte es nicht herausfinden. Es ist nicht gelungen, das Problem ordnungsgemäß zu beheben, dies funktioniert jedoch als vorübergehende Lösung:

Gehen Sie eine Ebene höher (über app.js) und tun Sie es npm install ejs. Es wird ein neuer Ordner node_modules erstellt, und Express sollte das Modul dann finden.

böser Schmuck
quelle
15
npm install ejs -gkönnte eine sauberere Problemumgehung sein. ( -gfür globale Installation)
Farzher
2
Beim Bereitstellen meiner App für Openshift trat der gleiche Fehler auf und ich bemerkte, dass ich vergessen hatte, eine Abhängigkeit zu ejsin hinzuzufügen packages.json. Jetzt funktioniert es einwandfrei ( npm installwurde beim nächsten Neustart automatisch durchgeführt).
Bastien Jansen
1
Ich glaube nicht, dass Sie eine node_moduleglobal installieren möchten , ich habe das gleiche zuvor getan und es wird ein Schmerz, wenn Sie
bereitstellen
1
Ich habe einfach das 'Express'-Modul als Abhängigkeit in meine' package.json'-Datei eingefügt und es hat funktioniert. Stellen Sie also sicher, dass sowohl 'ejs' als auch 'express' als Abhängigkeiten erwähnt werden.
Prateek
Natürlich habe ich die Hauptantwort (er) positiv bewertet, aber ich wollte auch @Stephen Bugs Kamenar dafür danken, dass er die (-g) globale Installation vorgeschlagen hat. Ich habe tatsächlich geschummelt und beides getan (faul mich) und es hat sofort nach dem Neustart meiner App funktioniert.
Herr Benedict
21

Installieren Sie Express lokal

( npm install expressim Stammverzeichnis des Projekts)


Ihr Projekt hängt von beiden expressund ab ejs, daher sollten Sie beide als Abhängigkeiten in Ihrem Projekt auflisten package.json.

Auf diese Weise werden beim Ausführen npm installin Ihrem Projektverzeichnis beide expressund installiert ejs, sodass var express = require('express')die lokale Installation von Express (die über dieejs lokal installierte Modul ) und nicht die globale Installation installiert, bei der dies nicht der Fall ist.

Im Allgemeinen ist es eine gute Idee, alle Abhängigkeiten in Ihrem explizit aufzulisten package.json, obwohl einige davon möglicherweise bereits global installiert sind, sodass Sie diese Art von Problemen nicht haben.

Wille
quelle
9

Ich hatte das gleiche Problem. Nachdem ich die Umgebungsvariable NODE_PATH auf den Speicherort meiner Module gesetzt hatte (in meinem Fall /usr/local/node-v0.8.4/node_modules), war das Problem behoben. PS NODE_PATH akzeptiert eine durch Doppelpunkte getrennte Liste von Verzeichnissen, wenn Sie mehr als eines angeben müssen.

Pete
quelle
Das ist super wichtig und wird oft übersehen, +1 für dich, Pete!
Javabeangrinder
1
Ich hatte kein NODE_PATH env var, also export NODE_PATH=.funktionierte ein einfaches für mein Projekt, das seine Abhängigkeiten in einem eigenen Verzeichnis hat. Prost
Greg
9

In meinem Fall habe ich ejs gerade manuell in package.json hinzugefügt :

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

Führen Sie npm install aus (möglicherweise müssen Sie es mit sudo ausführen ). Bitte beachten Sie, dass ejs standardmäßig das Ansichtsverzeichnis sieht

Levon
quelle
6

Vor langer Zeit, als das gleiche Problem bei mir auftrat.

Die Abhängigkeit war für ejs in der JSON-Datei vorhanden, hat versucht, sie lokal und global zu installieren, hat aber nicht funktioniert.

Dann habe ich das Modul manuell hinzugefügt, indem ich:

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

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

Dann funktioniert es.

Kael
quelle
Dies gilt insbesondere dann, wenn Sie Express als Abhängigkeit im Submodul
user210504
Dies macht es [ejs] erkennbar, wenn Sie Ihren Server über ein Webpack kompilieren (oder einfach bündeln, wenn Sie kein Typoskript verwenden). (Es ist jedoch entweder das Kopieren von Ansichten in dist oder weitere Arbeiten erforderlich, um es zum Laufen zu bringen.)
Daniel
5

Ich habe ejsmit Befehl installiertnpm install ejs in Express-Verzeichnis-Ebene und dies hat mein Problem gelöst.

Ich habe Express mit den im Express-Handbuch http://expressjs.com/guide.html genannten Schritten installiert

Ramesh Kotkar
quelle
4

Installieren Sie es lokal und nicht global. Dann kann Ihr Projekt auf jedem Computer ohne Fehler ausgeführt werden. Ich denke, es ist besser.

npm install express --save
npm install ejs --save
Chanaka Fernando
quelle
3

Ich hatte dieses Problem. Ich habe mit Node-Inspector debuggt und festgestellt, dass aus dem Ordner node_modules, in dem sich die Express-Quelldateien befanden, ejs nicht installiert war. Also habe ich es dort installiert und es hat funktioniert.

npm install -g ejsIch habe es nicht dort platziert, wo ich es erwartet hatte, obwohl NODE_PATH auf denselben Ordner node_modules gesetzt war. Prob mache es falsch, habe gerade mit Node angefangen.

Tippfehler Johnson
quelle
3

Ich habe sowohl: express als auch ejs mit der Option --save:

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

Auf diese Weise sind Express und EJs Abhängigkeiten der Datei package.json.

colo
quelle
3

Die Neuinstallation von npm, express und ejs hat mein Problem behoben

Dieser hat für mich gearbeitet,

  1. Auf Ihrem Terminal oder cmd -> Gehen Sie zu Ihrem Apps-Verzeichnis,
  2. cd pathtoyourapp / AppName
  3. Führen Sie Ihre 'npm-Installation' erneut aus.
  4. Führen Sie Ihren 'npm install express' erneut aus.
  5. Führen Sie Ihre 'npm install ejs' erneut aus.

Danach wurde der Fehler behoben.

Apelidoko
quelle
3

Nachdem Sie Express V xxx installiert haben, müssen Sie eine Vorlagen-View-Engine auswählen. Es gibt viele wirklich leicht zu lernen. Mein persönlicher Ansprechpartner ist EJS .

Andere wirklich großartige und leicht zu erlernende könnten sein:

So installieren Sie EJS (und beheben Ihren Fehler) Führen Sie es im Stammverzeichnis Ihres Projekts aus:

npm install ejs

Oder wenn Sie Garn verwenden:

yarn add ejs

Als nächstes müssen Sie das Modul benötigen, öffnen Sie also Ihre Datei dort, wo Sie Express benötigen (normalerweise app.js oder server.js).

unten hinzufügen var express = require('express');

var ejs = require('ejs');
Timm Jensen
quelle
2

SCHRITT 1

Siehe npm ls | grep ejsauf Root - Ebene Ihres Projekts zu überprüfen , ob Sie bereits hinzugefügt haben , ejs dependencyum Ihr Projekt.

Wenn nicht, fügen Sie dependencieses Ihrem Projekt hinzu. (Ich ziehe es vor, Abhängigkeiten hinzuzufügen, package.jsonanstatt npm installdas Modul zu verwenden.)

z.B.

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

SCHRITT 2 Laden Sie die Abhängigkeiten herunter

npm install

SCHRITT 3 Überprüfen Sie das EJS-Modul

$ npm ls | grep ejs
musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia
├── ejs@1.0.0
betenagupd
quelle
Großartig! Habe alle oben genannten Schritte ausgeführt, aber npm install nicht erneut ausgeführt. Vielen Dank.
N. Osil
Wollen Sie damit sagen, npm installdass es nach dem Hinzufügen nicht funktioniert hat "ejs": "^1.0.0"? Wenn ja, entfernen Sie diese Zeile und installieren Sie sie auf andere Weise als npm install ejs- npmjs.com/package/ejs . Es sollte ein ejs: latest versionzu package.json hinzufügen
prayagupd
2

Fügen Sie die Abhängigkeit hinzu package.jsonund führen Sie sie ausnpm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}
Marwari
quelle
2

Ich denke, ejs Template Engine ist nicht richtig auf Ihrem Computer installiert. Sie installieren die Template-Engine einfach mit npm

npm install ejs --save

Fügen Sie dann den folgenden Code in app.js ein

app.set('view engine', 'ejs')
Codemaker
quelle
2

Ich hatte das gleiche Problem. Also habe ich folgendes gemacht und es hat bei mir funktioniert.

Lösung:

  1. Führen Sie "npm init" im Projektverzeichnis aus, falls dies noch nicht geschehen ist.
  2. Installieren Sie ejs und drücken Sie es wie folgt aus:

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

Auf diese Weise werden die erforderlichen Abhängigkeiten in der Datei package.json erstellt

Hemanta
quelle
1

Ich habe das gleiche Problem, das nach der Installation des Express in meinem Projektverzeichnis behoben wurde. zuvor installiere ich es im globalen Bereich mit der Option -g mit dem Befehl npm install.

Mohit
quelle
1

In meinem Fall gab es keinen dummen Syntaxfehler, aber der gleiche Fehler trat auf. Ich hatte ejs und ejs-mate weltweit installiert. Ich habe es lokal installiert und festgestellt, dass mein Fehler behoben ist.

Abhishek Srivastava
quelle
1

Stellen Sie bitte sicher, dass Ihre Abhängigkeiten in Ihren package.json-Dateien auf dem neuesten Stand sind. Versuchen Sie, sie einzeln neu zu installieren, nachdem Sie auch sichergestellt haben, dass Ihr NPM die neueste Version ist (aktuell). Es hat bei mir funktioniert. Ich npm installrate Ihnen, für die Pakete zu laufen (das hat in meinem Fall funktioniert, nachdem es sich geweigert hat zu funktionieren, weil ich die Abhängigkeiten manuell hinzugefügt habe).

Douglas Egiemeh
quelle
1

In meinem Fall war es ein dummer Fehler - es war ein Tippfehler in der Middleware. Ich habe app.set('view engine', 'ejs.');den Punkt geschrieben, der den Fehler verursacht hat. Ich habe ejs und express lokal installiert

Surajit Mukherjee
quelle
1

Stellen Sie sicher, dass alle Abhängigkeiten installiert sind. npm install

Ich machte eine schnelle App für mich und hatte vergessen, Express hinzuzufügen. Warf den obigen Fehler.


quelle
1

Ich habe den gleichen Fehler für ejs, dann starte ich einfach. node install ejs Dadurch werden ejs erneut installiert.

und dann auch ausführen npm install, um node_modules erneut zu installieren. Das ist Arbeit für mich.

akshay_sushir
quelle
1

Ich bin auf dieses Problem gestoßen, nachdem ich vergessen hatte, ejs zu installieren, bevor ich meine App zum ersten Mal ausgeführt habe. Aus irgendeinem Grund wurde ejs nach der späteren Installation nicht mehr gesehen. Ich fand eine schnelle, saubere und effektive Lösung für dieses Problem , das durch Ausführen von Express neu zu installieren war npm uninstall expressdann npm install expressim lokalen Verzeichnis vor dem Neustart des Servers.

Duncan Jairo
quelle
0
app.set('view engine', 'ejs')

und dann im Terminal

npm install ejs --save 

behebt das Problem

Homam Bahrani
quelle
0

In meinem Fall deinstalliere ich einfach ejs und installiere es erneut.

npm uninstall ejs

dann

npm install ejs
Ian Natividad
quelle
0

npm install ejs --savehat für mich gearbeitet! ✅

Auf goormIDE hatte ich folgende Dateikonfiguration:

  • Container
    • main.js
    • package-lock.json
    • package.json
    • Knotenmodule
    • Ansichten
      • home.ejs

In meiner Datei main.js hatte ich auch diese Route

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

npm install ejs -ghat die entsprechende Abhängigkeit nicht in package.json hinzugefügt. npm install ejs --savetat. Ich habe die Befehlszeile aus dem Containerverzeichnis ausgeführt. Manuell hätte es der package.json hinzugefügt werden können mit: **

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

** **.

Tristan Bochu
quelle
0

npm i ejs --force

das hat bei mir funktioniert

Hytham Defrawy
quelle
0

Die lokale Installation von Express löste mein Problem. npm ich drücke aus - speichern

Shekhar Karna
quelle
Willkommen auf der SO! Warum und wie? Express wird standardmäßig lokal für die Entwicklung installiert.
peterh - Monica
0

Ich hatte das gleiche Problem und versuchte einige der gegebenen Lösungen, aber es funktionierte immer noch nicht. Alles, was ich getan habe, war, den Befehl "npx yarn" im Stammordner meines Projekts auszuführen, und das war es.

FANTASTISCHE WELT
quelle
-1

Der Fehler traf mich, als ich an goormIDE arbeitete. Dies geschieht im Wesentlichen, wenn Knotenpakete nicht in der laufenden Datei enthalten sind. Der Ort, an dem app.js oder home.js ausgeführt wird.

neeerajtk
quelle