Błąd: nie można znaleźć modułu „ejs”

85

Oto mój kompletny błąd:

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)

Mój kod źródłowy jest również bardzo prosty:

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

W moim folderze mam zainstalowane ejs w node_modules, z którego korzystałem npm install ejs. wprowadź opis obrazu tutajwięc moje pytanie brzmi… co daje? Co robię źle, aby węzeł nie mógł znaleźć EJS, gdy mam go wyraźnie zainstalowany?

Dzięki

Shamoon
źródło
Przepraszam, ale lol @ wiadomość: „De groeten”
Rob
1
czy zainstalowałeś express na całym świecie? jeśli dobrze pamiętam, miałem problemy podczas instalacji ekspresowej globalnie i ejs lokalnie. spróbuj także zainstalować express w folderze projektu lub ejs w globalnym folderze modułu.
pkyeck
Miałem ten sam problem. Skończyło się na usunięciu katalogu node_modules i wykonaniu nowej instalacji npm install -g.
Robert Walters,

Odpowiedzi:

149

Miałem dokładnie ten sam problem kilka dni temu i nie mogłem go rozgryźć. Nie udało się poprawnie rozwiązać problemu, ale działa to jako tymczasowa poprawka:

Przejdź o jeden poziom wyżej (powyżej app.js) i zrób to npm install ejs. Utworzy nowy folder node_modules i Express powinien wtedy znaleźć moduł.

zło
źródło
15
npm install ejs -gmoże być czystszym obejściem. ( -gdo instalacji globalnej)
Farzher
2
Podczas wdrażania Moje app do Openshift, miałem ten sam błąd i zauważyłem, że zapomniałem dodać zależność do ejsw packages.json. Teraz działa dobrze ( npm installzostało to zrobione automatycznie podczas następnego restartu).
Bastien Jansen
1
Nie sądzę, abyś chciał zainstalować node_moduleglobalnie, zrobiłem to samo wcześniej i staje się to uciążliwe podczas wdrażania
pourmesomecode
1
Po prostu dodałem moduł „express” jako zależność w moim pliku „package.json” i zaczął działać. Upewnij się więc, że zarówno „ejs”, jak i „express” są wymienione jako zależności.
Prateek
Oczywiście zagłosowałem za główną odpowiedzią (eee), ale chciałem również wyrazić uznanie dla @Stephen Bugs Kamenar za zasugerowanie (-g) instalacji globalnej. Właściwie oszukałem i zrobiłem jedno i drugie (leniwy mnie) i zadziałało natychmiast po ponownym uruchomieniu mojej aplikacji.
Pan Benedict,
22

Zainstaluj Express lokalnie

( npm install expressw katalogu głównym projektu)


Twój projekt zależy od obu expressi ejs, dlatego należy je wymienić jako zależności w pliku package.json.

W ten sposób, kiedy uruchomisz npm installkatalog swojego projektu, zainstaluje on oba expressi ejs, więc var express = require('express')będzie to lokalna instalacja programu express (który wie o ejsmodule, który zainstalowałeś lokalnie), a nie globalna, co nie.

Ogólnie dobrym pomysłem jest jawne wymienienie wszystkich zależności w twoim, package.jsonnawet jeśli niektóre z nich mogą być już zainstalowane globalnie, więc nie masz tego typu problemów.

Wola
źródło
9

Miałem ten sam problem. Po ustawieniu zmiennej środowiskowej NODE_PATH na lokalizację moich modułów (w moim przypadku /usr/local/node-v0.8.4/node_modules) problem zniknął. PS NODE_PATH akceptuje listę katalogów oddzielonych dwukropkami, jeśli chcesz określić więcej niż jeden.

Pete
źródło
To bardzo ważne i często pomijane, +1 dla Ciebie Pete!
javabeangrinder
1
Nie miałem zmiennej NODE_PATH env, więc prosty export NODE_PATH=.działał dla mojego projektu, który ma swoje zależności w swoim własnym katalogu. Pozdrawiam
Greg,
9

W moim przypadku właśnie dodałem ręcznie ejs w package.json :

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

I uruchom instalację npm (może być konieczne uruchomienie go z sudo ) Pamiętaj, że ejs wygląda domyślnie katalog views

Levon
źródło
6

Dawno temu, gdy ten sam problem wydarzył się ze mną.

Zależność istniała dla ejs w pliku JSON, próbowałem zainstalować go lokalnie i globalnie, ale nie zadziałało.

Następnie ręcznie dodałem moduł poprzez:

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

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

Wtedy to działa.

Kael
źródło
jest to szczególnie prawdziwe, gdy masz wyrażanie jako zależność w
module podrzędnym
To sprawia, że ​​[ejs] jest wykrywalny podczas kompilowania (lub po prostu łączenia w pakiety, jeśli nie używa się maszynopisu) na serwerze za pośrednictwem pakietu internetowego. (konieczne jest skopiowanie widoków do dist lub dalsze prace, aby to działało; jednak.)
Daniel
5

Zainstalowałem ejsza pomocą polecenia npm install ejsna poziomie katalogu ekspresowego i to rozwiązało mój problem.

mam zainstalować ekspresową za pomocą kroków wymienionych w przewodniku ekspresowym http://expressjs.com/guide.html

Ramesh Kotkar
źródło
4

Zainstaluj go lokalnie, zamiast instalować go globalnie. Wtedy Twój projekt będzie można uruchomić na dowolnej maszynie bez żadnego błędu, myślę, że będzie lepiej.

npm install express --save
npm install ejs --save
Chanaka Fernando
źródło
3

Miałem ten problem. Debugowałem za pomocą node-inspector i zobaczyłem, że z folderu node_modules, w którym znajdowały się pliki źródłowe Express, ejs nie został zainstalowany. Więc zainstalowałem go tam i zadziałało.

npm install -g ejsnie umieściłem go tam, gdzie się spodziewałem, mimo że NODE_PATH jest ustawiony na ten sam folder node_modules. Prawdopodobnie robię to źle, właśnie zacząłem od node.

Typo Johnson
źródło
3

Zainstalowałem oba: express i ejs z opcją --save:

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

W ten sposób express i ejs są plikami zależnymi package.json.

colo
źródło
3

Ponowna instalacja npm, express i ejs rozwiązała mój problem

Ten pracował dla mnie,

  1. Na terminalu lub cmd -> Przejdź do katalogu aplikacji,
  2. cd pathtoyourapp / AppName
  3. uruchom ponownie instalację „npm”
  4. uruchom ponownie „npm install express”
  5. uruchom ponownie polecenie „npm install ejs”

po tym błąd został naprawiony.

apelidoko
źródło
3

Po zainstalowaniu Express V xxx Musisz wybrać silnik widoku szablonu. Istnieje wiele naprawdę łatwych do nauczenia się. Moim osobistym celem jest EJS .

Inne naprawdę świetne i łatwe do nauczenia mogą być:

Aby zainstalować EJS (i naprawić błąd) Uruchom w katalogu głównym projektu:

npm install ejs

Lub jeśli używasz przędzy:

yarn add ejs

Następnie musisz wymagać modułu, więc otwórz plik tam, gdzie potrzebujesz express (zwykle app.js lub server.js)

dodaj poniżej var express = require('express');

var ejs = require('ejs');
Timm Jensen
źródło
3

miałem ten sam problem. Zrobiłem więc następujące i zadziałało.

rozwiązanie:

  1. uruchom "npm init" w katalogu projektu, jeśli nie zostało to jeszcze zrobione.
  2. zainstaluj ejs i wyraź w następujący sposób:

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

w ten sposób tworzy wymagane zależności w pliku package.json

Hemanta
źródło
2

KROK 1

Zobacz npm ls | grep ejsna poziomie głównym projektu, aby sprawdzić, czy został już dodany ejs dependencydo projektu.

Jeśli nie, dodaj go jako dependenciesdo swojego projektu. (Wolę dodać zależność package.jsonzamiast npm installmodułu).

na przykład.

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

KROK 2 pobierz zależności

npm install

KROK 3 Sprawdź moduł ejs

$ npm ls | grep ejs
musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia
├── ejs@1.0.0
prayagupd
źródło
Świetny! Wykonałem wszystkie powyższe czynności, ale nie uruchomiłem ponownie instalacji npm. Dzięki.
N. Osil
mówisz, npm installże nie działało po dodaniu "ejs": "^1.0.0"? Jeśli tak, usuń tę linię i zainstaluj w inny sposób npm install ejs- npmjs.com/package/ejs . Powinien dodać a ejs: latest versiondo package.json
prayagupd
2

Dodaj zależność, package.jsona następnie uruchomnpm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}
marwari
źródło
2

Myślę, że silnik szablonów ejs nie jest poprawnie zainstalowany na twoim komputerze. Wystarczy zainstalować silnik szablonów za pomocą npm

npm install ejs --save

następnie dołącz następujący kod do pliku app.js

app.set('view engine', 'ejs')
Codemaker
źródło
1

Mam ten sam problem, który rozwiązałem po zainstalowaniu ekspresu w katalogu mojego projektu. wcześniej instalowałem go w zasięgu globalnym z opcją -g z poleceniem npm install.

Mohit
źródło
1

W moim przypadku nie było głupiego błędu składniowego, ale wystąpił ten sam błąd. Zainstalowałem ejs i ejs-mate na całym świecie. Zainstalowałem go lokalnie i stwierdziłem, że mój błąd został rozwiązany.

Abhishek Srivastava
źródło
1

uprzejmie upewnij się, że Twoje zależności w plikach package.json są aktualne. Spróbuj ponownie zainstalować je pojedynczo po upewnieniu się, że NPM jest najnowszą wersją (aktualną). U mnie to zadziałało. Radzę uruchomić npm installdla pakietów (to właśnie zadziałało w moim własnym przypadku po tym, jak odmówił działania, ponieważ dodałem zależności ręcznie).

douglas egiemeh
źródło
1

W moim przypadku był to głupi błąd - była to literówka w oprogramowaniu pośrednim. Napisałem app.set('view engine', 'ejs.');kropkę, która spowodowała błąd. Zainstalowałem ejs i Express lokalnie

Surajit Mukherjee
źródło
1

Upewnij się, że wszystkie zależności są zainstalowane. npm install

Robiłem dla siebie szybką aplikację i zapomniałem dodać ekspres. Wyrzuciłem powyższy błąd.


źródło
1

Napotykam ten sam błąd dla ejs, a potem po prostu uruchamiam node install ejs To zainstaluje ponownie ejs.

a następnie npm installponownie uruchom moduł node_modules. To działa dla mnie.

akshay_sushir
źródło
1

Napotkałem ten problem po tym, jak zapomniałem zainstalować ejs przed pierwszym uruchomieniem aplikacji. Z jakiegoś powodu ejs nie był widoczny po późniejszej instalacji. Znalazłem szybki, czyste i skuteczne rozwiązanie tego problemu, który miał wyrazić ponownie zainstalować uruchamiając npm uninstall expresspotem npm install expressw lokalnym katalogu przed ponownym uruchomieniem serwera.

Duncan Jairo
źródło
0
app.set('view engine', 'ejs')

a potem w terminalu

npm install ejs --save 

rozwiązuje problem

Homam Bahrani
źródło
0

W moim przypadku po prostu odinstalowałem, a następnie ponownie zainstalowałem ejs.

npm uninstall ejs

następnie

npm install ejs
Ian Natividad
źródło
0

npm install ejs --savepracował dla mnie! ✅

Na goormIDE miałem taką konfigurację pliku:

  • pojemnik
    • main.js
    • pakiet-lock.json
    • package.json
    • node_modules
    • wyświetlenia
      • home.ejs

W moim pliku main.js również miałem tę trasę

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

npm install ejs -gnie dodał odpowiedniej zależności w pliku package.json. npm install ejs --savezrobił. Wykonałem wiersz poleceń z katalogu kontenera. Można go ręcznie dodać do pliku package.json za pomocą: **

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

**

Tristan Bochu
źródło
0

npm i ejs --force

to działało dla mnie

Hytham Defrawy
źródło
0

Zainstalowanie usługi Express lokalnie rozwiązało ten sam problem. npm i express --zapisz

Shekhar Karna
źródło
Witamy w SO! Dlaczego i jak? Express jest domyślnie instalowany lokalnie na potrzeby programowania.
peterh - Przywróć Monikę
0

miałem ten sam problem i wypróbowałem kilka z podanych rozwiązań, ale nadal nie działało. wszystko, co zrobiłem, to uruchomić polecenie „npx yarn” w folderze głównym mojego projektu i to wszystko.

NIESAMOWITY ŚWIAT
źródło
-1

Błąd pojawił się podczas pracy nad goormIDE. Dzieje się tak zasadniczo, gdy pakiety węzłów nie znajdują się w uruchomionym pliku. Miejsce wykonywania app.js lub home.js.

neeerajtk
źródło