Ошибка: не удается найти модуль ‘ejs’

#node.js #express #ejs

#node.js #экспресс #ejs

Вопрос:

Вот моя полная ошибка:

 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, когда он явно установлен?

Спасибо

Комментарии:

1. вы установили express глобально? если я правильно помню, у меня были проблемы при установке express глобально и ejs локально. попробуйте также установить express в папку вашего проекта или ejs в глобальную папку модуля.

2. У меня была та же проблема. В итоге я удалил каталог node_modules и выполнил новую установку npm install -g.

Ответ №1:

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

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

Комментарии:

1. npm install ejs -g может быть более чистым обходным путем. ( -g для глобальной установки)

2. При развертывании моего приложения в Openshift у меня возникла та же ошибка, и я заметил, что забыл добавить зависимость в ejs in packages.json . Теперь все работает нормально ( npm install было сделано автоматически при следующем перезапуске).

3. Я не думаю, что вы захотите установить node_module глобально, я делал то же самое раньше, и это становится проблемой при развертывании

4. Я просто добавил модуль ‘express’ в качестве зависимости в свой файл ‘package.json’, и он начал работать. Поэтому убедитесь, что оба ‘ejs’ и ‘express’ указаны как зависимости.

5. Очевидно, я поддержал основной ответ (er), но я также хотел отдать должное @Stephen Bugs Kamenar за предложение (-g) глобальной установки. На самом деле я обманул и сделал оба (ленивый я), и это сработало сразу после перезапуска моего приложения.

Ответ №2:

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

( npm install express находясь в корневом каталоге проекта)


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

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

В общем, рекомендуется явно перечислить все зависимости в вашем package.json , даже если некоторые из них уже могут быть установлены глобально, чтобы у вас не возникало подобных проблем.

Ответ №3:

Путь назад, когда со мной случилась та же проблема.

Зависимость была для ejs в файле JSON, пытался установить его локально и глобально, но не сработало.

Затем я вручную добавил модуль с помощью:

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

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

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

Комментарии:

1. это особенно верно, когда у вас есть выражение как зависимость в подмодуле

2. Это делает его [ejs] доступным для обнаружения при компиляции (или просто связывании, если не используется typescript) вашего сервера с помощью webpack. (однако для его работы требуется либо копирование представлений в dist, либо дальнейшая работа.)

3. Ошибка: не удается найти модуль ‘ejs’

Ответ №4:

В моем случае я просто добавил ejs вручную в package.json:

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

И запустите npm install (возможно, вам нужно запустить его с помощью sudo)
Обратите внимание, что ejs просматривает каталог views по умолчанию

Ответ №5:

У меня была такая же проблема. Как только я установил переменную окружения NODE_PATH для расположения моих модулей (в моем случае /usr/local/node-v0.8.4/node_modules ), проблема исчезла. P.S. NODE_PATH принимает список каталогов, разделенных двоеточием, если вам нужно указать более одного.

Комментарии:

1. Это очень важно и часто пропускается, 1 тебе, Пит!

2. У меня не было NODE_PATH env var, поэтому export NODE_PATH=. для моего проекта работал простой, который имеет свои зависимости в своем собственном каталоге. Приветствия

Ответ №6:

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

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

Ответ №7:

После установки node express project вам необходимо установить пакет ejs или pug для этого

либо вы можете попробовать с node

 npm install ejs 
npm install pug
  

или вы можете попробовать с помощью yarn

 yarn add ejs
yarn add pug
  

глобально или локально

Ответ №8:

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

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

Ответ №9:

После установки Express V x.x.x вам необходимо выбрать механизм просмотра шаблонов. Есть много действительно простых в освоении. Мой личный переход — это EJS.

Другие действительно отличные и простые в освоении могут быть:

Чтобы установить EJS (и исправить ошибку), запустите в корне вашего проекта:

 npm install ejs
  

Или если вы используете Yarn:

 yarn add ejs
  

Затем вам нужно будет запросить модуль, поэтому откройте свой файл, в котором вам требуется express (обычно app.js или server.js )

добавить ниже var express = require('express');

 var ejs = require('ejs');
  

Ответ №10:

у меня была та же проблема. Итак, я сделал следующее, и это сработало для меня.

решение:

  1. запустите «npm init» в каталоге проекта, если это еще не сделано.
  2. установите ejs и выразите следующим образом:

npm install ejs —сохранить
npm install express —сохранить

при этом он создает необходимые зависимости в файле package.json

Ответ №11:

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

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

Ответ №12:

Я установил оба: express и ejs с опцией —сохранить:

npm install ejs —сохранить npm install express —сохранить

Таким образом, express и ejs являются зависимыми файлами package.json.

Ответ №13:

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

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

  1. На вашем терминале или cmd -> Перейдите в каталог приложений,
  2. cd pathtoyourapp/AppName
  3. повторите установку ‘npm install’
  4. повторно запустите ‘npm install express’
  5. повторно запустите ‘npm install ejs’

после этого ошибка была исправлена.

Ответ №14:

ШАГ 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
  

Комментарии:

1. Отлично! Выполнил все вышеперечисленное, но не запустил npm install снова. Спасибо.

2. вы говорите npm install , что не сработало после добавления "ejs": "^1.0.0" ? Если это так, удалите эту строку и установите другой способ, как npm install ejs npmjs.com/package/ejs . Он должен добавить ejs: latest version в package.json

Ответ №15:

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

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

Ответ №16:

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

 npm install ejs --save
  

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

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

Ответ №17:

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

Ответ №18:

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

Ответ №19:

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

Ответ №20:

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

Ответ №21:

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

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

Ответ №22:

Я сталкиваюсь с той же ошибкой для ejs, затем я просто запускаю node install ejs это, чтобы снова установить ejs.

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

Ответ №23:

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

Ответ №24:

npm i ejs --force

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

Ответ №25:

Локальная установка express решила мою ту же проблему. npm i express —сохранить

Комментарии:

1. Добро пожаловать на SO! Почему и как? Экспресс по умолчанию локально установлен для разработки.

Ответ №26:

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

Ответ №27:

вы должны иметь

 const ejs = require('ejs')
app.set('view engine', 'ejs')
  

Ответ №28:

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

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

 npm install ejs --save 
  

устраняет проблему

Ответ №29:

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

 npm uninstall ejs
  

затем

 npm install ejs
  

Ответ №30:

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

**