Помилка: не вдається знайти модуль '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);

У моїй папці я встановив ejs у node_modules, якими я користувався npm install ejs. введіть тут опис зображенняотже, моє питання .. що дає? Що я роблю неправильно, щоб вузол не міг знайти EJS, коли я чітко встановив його?

Дякую


Вибачте, але lol @ повідомлення: 'De groeten'
Роб

1
Ви встановили Express у всьому світі? якщо я правильно пам’ятаю, у мене виникли проблеми при встановленні express global і ejs локально. спробуйте також встановити express у папці вашого проекту або ejs у глобальній папці модуля.
pkyeck

У мене була та сама проблема. У підсумку я видалив каталог node_modules і зробив нову установку npm install -g.
Роберт Уолтерс,

Відповіді:


149

У мене була така сама проблема кілька днів тому, і я не міг її зрозуміти. Не вдалося виправити проблему належним чином, але це працює як тимчасове виправлення:

Підніміться на один рівень (вище app.js) і зробіть npm install ejs. Він створить нову папку node_modules, і Express повинен знайти модуль тоді.


15
npm install ejs -gможе бути більш чистим обхідним шляхом. ( -gдля глобальної інсталяції)
Farzher

2
При розгортанні моє додаток до OpenShift, у мене була така ж помилка і зауважив , що я забув додати залежність до ejsв packages.json. Тепер він працює нормально (це npm installбуло зроблено автоматично під час наступного перезапуску).
Бастієн Янсен

1
Я не думаю, що ви хотіли б встановлювати node_moduleглобально, я робив те саме раніше, і це стає болем при розгортанні
pourmesomecode

1
Я просто додав модуль 'express' як залежність у свій файл 'package.json', і він почав працювати. Тож переконайтесь, що як „ejs“, так і „express“ згадуються як залежності.
Prateek

Очевидно, я підтримав основну відповідь, але я також хотів віддати належне @Stephen Bugs Kamenar за пропозицію глобальної установки (-g). Я насправді обдурив і зробив і те, і інше (ледачий), і це спрацювало одразу після перезапуску мого додатка.
Містер Бенедикт,

22

Встановіть Express локально

( npm install expressперебуваючи в кореневому каталозі проекту)


Ваш проект залежить від обох expressі ejs, тому ви повинні вказати їх обидва як залежності у вашому package.json.

Таким чином, коли ви запускаєте npm installу своєму каталозі проекту, він встановлюватиме і те, expressі ejs, таким чином, це var express = require('express')буде локальна установка express (яка знає про ejsмодуль, який ви встановили локально), а не глобальна, яка цього не робить.

Загалом, гарною ідеєю є чіткий перелік усіх залежностей у вашій системі, package.jsonхоча деякі з них уже можуть бути встановлені глобально, тому у вас немає таких проблем.


9

У мене була та сама проблема. Як тільки я встановив змінну середовища NODE_PATH для розташування моїх модулів (/usr/local/node-v0.8.4/node_modules у моєму випадку) проблема зникла. PS NODE_PATH приймає розділений двокрапками список каталогів, якщо вам потрібно вказати більше одного.


Це надзвичайно важливо і часто пропускається, +1 вам Піт!
javabeangrinder

1
У мене не було NODE_PATH env var, тому простий export NODE_PATH=.працював для мого проекту, який має свої залежності у власному каталозі. Вітання
Грег

9

У моєму випадку я просто додав ejs вручну в package.json :

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

І запустіть npm install (можливо, вам потрібно запустити його з sudo ). Зверніть увагу, що ejs виглядає директорією подань за замовчуванням


6

Давно, коли зі мною трапилася та сама проблема.

Існує залежність для ejs у файлі JSON, спробував встановити його локально та глобально, але не спрацював.

Тоді я зробив додавання модуля вручну за допомогою:

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

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

Тоді це працює.


це особливо вірно, коли у вас є експрес як залежність у підмодулі
user210504

Це робить його [ejs] доступним під час компіляції (або просто групування, якщо не використовується typecript) вашого сервера через webpack. (однак для того, щоб це працювало, потрібно копіювати подання для дистрибутиву, або потрібна подальша робота).
Даніель

5

Я встановив ejsза допомогою команди npm install ejsна рівні експрес-каталогу, і це вирішило мою проблему.

я встановив експрес за допомогою кроків, згаданих у експрес-посібнику http://expressjs.com/guide.html


4

Встановіть його локально, а не глобально. Тоді ваш проект можна запустити на будь-якій машині без помилок. Я думаю, це краще.

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

3

У мене була ця проблема. Я налагодив за допомогою node-inspector і побачив, що з папки node_modules, де були експрес-вихідні файли, ejs не встановлено. Тому я встановив його там, і це спрацювало.

npm install -g ejsне поставив його там, де я очікував, незважаючи на те, що NODE_PATH встановлено в ту ж папку node_modules. Prob робить це неправильно, тільки що почав з node.


3

Я встановив обидва: express та ejs з опцією --save:

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

Таким чином express і ejs - це файл залежності package.json.


3

Повторна інсталяція npm, express та ejs виправила мою проблему

Цей працював у мене,

  1. На своєму терміналі або cmd -> Перейдіть до каталогу програм,
  2. cd pathtoyourapp / AppName
  3. перезапустіть інсталяцію npm
  4. повторно запустіть 'npm install express'
  5. перезапустіть 'npm install ejs'

після цього помилка була виправлена.


3

Після встановлення Express V 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 install ejs --save
npm install express --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

КРОК 3 перевірка модуля ejs

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

Чудово! Зробив усе вищезазначене, але не запустив npm install знову. Дякую.
N. Osil

ви кажете, npm installщо не працювало після додавання "ejs": "^1.0.0"? Якщо так, видаліть цей рядок і встановіть іншим способом як npm install ejs- npmjs.com/package/ejs . Він повинен додати a ejs: latest versionдо package.json
prayagupd

2

Додайте залежність package.jsonі запустітьnpm install

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

2

Я думаю, що механізм шаблону ejs неправильно встановлений на вашому комп'ютері. Ви просто встановлюєте механізм шаблонів за допомогою npm

npm install ejs --save

потім включіть наступний код в app.js

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

1

У мене така сама проблема, яку вона вирішує після встановлення express у моєму каталозі проекту. раніше я встановлюю його в глобальному масштабі за допомогою опції -g за допомогою команди npm install.


1

У моєму випадку не було дурної синтаксичної помилки, але така сама помилка виникла. Я встановив ejs та ejs-mate у всьому світі. Я встановив його локально і виявив, що помилку вирішено.


1

будь ласка, переконайтесь, що ваші залежності у файлах package.json є актуальними. Спробуйте перевстановити їх по черзі, також переконавшись, що ваш NPM є останньою версією (оновленою). У мене це спрацювало. Я раджу бігти npm installза пакетами (ось що працювало в моєму випадку після того, як він відмовився працювати, тому що я додав залежності вручну).


1

У моєму випадку це була дурна помилка - це була помилка в проміжному програмному забезпеченні. Я написав, app.set('view engine', 'ejs.');що точка спричинила помилку. Я встановив ejs і express локально


1

Переконайтесь, що всі залежності встановлені. npm install

Я робив для себе швидкий додаток, і забув додати експрес. Викинув вищевказану помилку.


1

Я стикаюся з тією ж помилкою для ejs, тоді я просто запускаю node install ejs Це встановить ejs знову.

а потім також запустіть, npm installщоб знову встановити node_modules. Це робота для мене.


1

Я зіткнувся з цією проблемою після того, як забув встановити ejs перед першим запуском програми. З якоїсь причини після встановлення його ejs не було видно. Я знайшов швидке, чисте та ефективне рішення цієї проблеми, яке полягало в перевстановленні Express, запустивши 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
    • node_modules
    • погляди
      • home.ejs

У моєму файлі main.js у мене також був цей маршрут

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

npm install ejs -gне додав відповідну залежність всередині package.json. npm install ejs --saveзробила. Я виконав командний рядок з каталогу контейнера. Вручну його можна було додати до package.json за допомогою: **

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

**



0

Встановлення Express локально вирішило мою ту ж проблему. npm я висловлюю --save


Ласкаво просимо до SO! Чому і як? Express за замовчуванням встановлюється локально для розробки.
Петер

0

у мене була та сама проблема, і я спробував кілька наведених рішень, але це все одно не спрацювало. все, що я зробив, це запустити команду "npx yarn" у кореневій папці мого проекту, і все.


-1

Помилка потрапила в мене, коли я працював над goormIDE. Це відбувається в основному, коли пакети вузлів не знаходяться всередині запущеного файлу. Місце, де виконується app.js або home.js.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.