Ошибка: не удается найти модуль 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 @ message: 'De groeten'
Роб
1
вы установили экспресс глобально? Если я правильно помню, у меня были проблемы при установке Express глобально и ejs локально. попробуйте также установить Express в папку вашего проекта или ejs в папку глобального модуля.
pkyeck
У меня такая же проблема. В итоге я удалил каталог node_modules и выполнил новую установку npm install -g.
Роберт Уолтерс

Ответы:

149

У меня была такая же проблема пару дней назад, и я не мог ее понять. Не удалось правильно решить проблему, но это работает как временное решение:

Поднимитесь на один уровень выше (выше app.js) и сделайте npm install ejs. Он создаст новую папку node_modules, и тогда Express должен найти модуль.

злой сельдерей
источник
15
npm install ejs -gможет быть более чистым обходным путем. ( -gдля глобальной установки)
Фаржер
2
При развертывании моего приложения в Openshift у меня была та же ошибка, и я заметил, что забыл добавить зависимость для ejsin packages.json. Теперь все работает нормально ( npm installбыло сделано автоматически при следующем перезапуске).
Bastien Jansen
1
Не думаю, что вы захотите установить node_moduleглобально, я делал то же самое раньше, и это становится
проблемой
1
Я просто добавил модуль express в качестве зависимости в свой файл package.json, и он начал работать. Поэтому убедитесь, что и ejs, и express упоминаются как зависимости.
Prateek
Очевидно, я поддержал основной ответ (э-э), но я также хотел поблагодарить @Stephen Bugs Kamenar за предложение (-g) глобальной установки. На самом деле я обманул и сделал и то, и другое (ленив меня), и это сработало сразу после перезапуска моего приложения.
Мистер Бенедикт
22

Установить экспресс локально

( 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=.моем проекте работал простой, у которого есть зависимости в собственном каталоге. Cheers
Грег
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);

Тогда это работает.

Kael
источник
это особенно верно, когда у вас есть зависимость от выражения в подмодуле
user210504
Это делает его [ejs] обнаруживаемым при компиляции (или просто объединении, если не используется машинописный текст) вашего сервера через webpack. (однако требуется либо копирование представлений в dist, либо дополнительная работа, чтобы заставить его работать.)
Даниэль
5

Я установил ejsс помощью команды npm install ejsна уровне экспресс-каталога, и это решило мою проблему.

Я установил экспресс, используя шаги, упомянутые в экспресс-руководстве http://expressjs.com/guide.html

Рамеш Коткар
источник
4

Установите его локально, а не глобально. Тогда ваш проект можно будет запустить на любой машине без ошибок. Думаю, так лучше.

npm install express --save
npm install ejs --save
Чанака Фернандо
источник
3

У меня была такая проблема. Я отлаживал с помощью node-Inspector и увидел, что из папки node_modules, где были исходные файлы express, ejs не был установлен. Я установил его там, и он заработал.

npm install -g ejsне поместил его там, где я ожидал, несмотря на то, что NODE_PATH установлен в ту же папку node_modules. Вероятно, сделал что-то неправильно, просто начал с узла.

Опечатка Джонсон
источник
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. Благодарю.
Н.
ты хочешь сказать npm install, не заработало после добавления "ejs": "^1.0.0"? Если да, удалите эту строку и установите другой способ как npm install ejs- npmjs.com/package/ejs . Он должен добавить ejs: latest versionв package.json
прайагупд 02
2

Добавьте зависимость, package.jsonа затем запуститеnpm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}
Марвари
источник
2

Я думаю, что шаблонизатор ejs неправильно установлен на вашем компьютере. Вы просто устанавливаете шаблонизатор с помощью npm

npm install ejs --save

затем включите следующий код в app.js

app.set('view engine', 'ejs')
Codemaker
источник
1

У меня та же проблема, которую она решает после установки экспресса в каталог моего проекта. ранее я устанавливал его в глобальном масштабе с параметром -g с командой установки npm.

Mohit
источник
1

В моем случае не было глупой синтаксической ошибки, но возникла такая же ошибка. Я установил ejs и ejs-mate по всему миру. Я установил его локально и обнаружил, что моя ошибка устранена.

Абхишек Шривастава
источник
1

пожалуйста, убедитесь, что ваши зависимости в файлах package.json актуальны. Попробуйте переустановить их по одному, убедившись, что у вас установлена ​​последняя версия NPM (актуальная). У меня это сработало. Я советую вам запускать npm installпакеты (это то, что сработало в моем случае после того, как он отказался работать, потому что я добавил зависимости вручную).

Дуглас Эгием
источник
1

В моем случае это была глупая ошибка - опечатка в промежуточном программном обеспечении. Я написал app.set('view engine', 'ejs.');точку, вызвавшую ошибку. Я установил ejs и выразил локально

Сураджит Мукерджи
источник
1

Убедитесь, что все зависимости установлены. npm install

Я делал быстрое приложение для себя и забыл добавить экспресс. Выкинул вышеуказанную ошибку.


источник
1

У меня такая же ошибка для ejs, затем я просто запускаю. node install ejs Это снова установит ejs.

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

акшай_сушир
источник
1

Я столкнулся с этой проблемой после того, как забыл установить ejs перед первым запуском приложения. По какой-то причине после установки ejs не было видно. Я нашел быстрое, чистое и эффективное решение этой проблемы , которое должны было повторно выразить, запустив npm uninstall expressзатем npm install expressв локальном каталоге перед запуском сервера.

Дункан Хайро
источник
0
app.set('view engine', 'ejs')

а затем в терминале

npm install ejs --save 

решает проблему

Хомам Бахрани
источник
0

В моем случае я просто удаляю, а затем снова устанавливаю ejs.

npm uninstall ejs

тогда

npm install ejs
Ян Нативидад
источник
0

npm install ejs --saveу меня сработало! ✅

На goormIDE у меня была такая конфигурация файла:

  • контейнер
    • main.js
    • пакет-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

npm i ejs --force

это сработало для меня

Hytham Defrawy
источник
0

Установка экспресс локально решила мою проблему. npm я экспресс - сохранить

Шекхар Карна
источник
Добро пожаловать на SO! Почему и как? Express по умолчанию устанавливается локально для разработки.
Питер - Восстановить Монику
0

У меня была такая же проблема, и я попробовал несколько из указанных решений, но это все еще не сработало. все, что я сделал, это запустил команду «npx yarn» в корневой папке моего проекта, и все.

УДИВИТЕЛЬНЫЙ МИР
источник
-1

Ошибка поразила меня, когда я работал над goormIDE. В основном это происходит, когда пакетов узлов нет внутри работающего файла. Место, где выполняется app.js или home.js.

Neeerajtk
источник