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
.
wię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
Odpowiedzi:
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ł.źródło
npm install ejs -g
może być czystszym obejściem. (-g
do instalacji globalnej)ejs
wpackages.json
. Teraz działa dobrze (npm install
zostało to zrobione automatycznie podczas następnego restartu).node_module
globalnie, zrobiłem to samo wcześniej i staje się to uciążliwe podczas wdrażaniaZainstaluj Express lokalnie
(
npm install express
w katalogu głównym projektu)Twój projekt zależy od obu
express
iejs
, dlatego należy je wymienić jako zależności w plikupackage.json
.W ten sposób, kiedy uruchomisz
npm install
katalog swojego projektu, zainstaluje on obaexpress
iejs
, więcvar express = require('express')
będzie to lokalna instalacja programu express (który wie oejs
module, 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.json
nawet jeśli niektóre z nich mogą być już zainstalowane globalnie, więc nie masz tego typu problemów.źródło
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.
źródło
export NODE_PATH=.
działał dla mojego projektu, który ma swoje zależności w swoim własnym katalogu. PozdrawiamW 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
źródło
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.
źródło
Zainstalowałem
ejs
za pomocą polecenianpm install ejs
na 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
źródło
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.
źródło
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 ejs
nie 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.źródło
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.
źródło
Ponowna instalacja npm, express i ejs rozwiązała mój problem
Ten pracował dla mnie,
po tym błąd został naprawiony.
źródło
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:
Lub jeśli używasz przędzy:
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');
źródło
miałem ten sam problem. Zrobiłem więc następujące i zadziałało.
rozwiązanie:
npm install ejs --save
npm install express --save
w ten sposób tworzy wymagane zależności w pliku package.json
źródło
KROK 1
Zobacz
npm ls | grep ejs
na poziomie głównym projektu, aby sprawdzić, czy został już dodanyejs
dependency
do projektu.Jeśli nie, dodaj go jako
dependencies
do swojego projektu. (Wolę dodać zależnośćpackage.json
zamiastnpm install
moduł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
KROK 3 Sprawdź moduł ejs
$ npm ls | grep ejs musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia ├── ejs@1.0.0
źródło
npm install
że nie działało po dodaniu"ejs": "^1.0.0"
? Jeśli tak, usuń tę linię i zainstaluj w inny sposóbnpm install ejs
- npmjs.com/package/ejs . Powinien dodać aejs: latest version
do package.jsonDodaj zależność,
package.json
a następnie uruchomnpm install
{ ... ... "dependencies": { "express": "*", "ejs": "*", } }
źródło
Myślę, że silnik szablonów ejs nie jest poprawnie zainstalowany na twoim komputerze. Wystarczy zainstalować silnik szablonów za pomocą npm
następnie dołącz następujący kod do pliku app.js
app.set('view engine', 'ejs')
źródło
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.
źródło
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.
źródło
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 install
dla 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).źródło
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źródło
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
Napotykam ten sam błąd dla ejs, a potem po prostu uruchamiam
node install ejs
To zainstaluje ponownie ejs.a następnie
npm install
ponownie uruchom moduł node_modules. To działa dla mnie.źródło
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 express
potemnpm install express
w lokalnym katalogu przed ponownym uruchomieniem serwera.źródło
app.set('view engine', 'ejs')
a potem w terminalu
rozwiązuje problem
źródło
W moim przypadku po prostu odinstalowałem, a następnie ponownie zainstalowałem ejs.
następnie
źródło
npm install ejs --save
pracował dla mnie! ✅Na goormIDE miałem taką konfigurację pliku:
W moim pliku main.js również miałem tę trasę
app.get("/", function(req, res){ res.render("home.ejs"); })
npm install ejs -g
nie dodał odpowiedniej zależności w pliku package.json.npm install ejs --save
zrobił. Wykonałem wiersz poleceń z katalogu kontenera. Można go ręcznie dodać do pliku package.json za pomocą: **"dependencies": { "ejs": "^3.0.2",}
**
źródło
to działało dla mnie
źródło
Zainstalowanie usługi Express lokalnie rozwiązało ten sam problem. npm i express --zapisz
źródło
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.
źródło
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.
źródło