Подтвердить что ты не робот

Ошибка: не удается найти модуль '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. enter image description here так что мой вопрос.. что дает? Что я делаю неправильно, чтобы node не смог найти EJS, когда я его явно установил?

Спасибо

4b9b3361

Ответ 1

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

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

Ответ 2

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

(npm install express в корневом каталоге проекта)


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

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

Я установил оба: express и ejs с опцией --save:

npm установить ejs --save  npm install express --save

Этот способ выражения и ejs зависят от файла package.json.

Ответ 8

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

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

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

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

Ответ 9

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

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

Ответ 10

ШАГ 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
[email protected] /Users/prayagupd/nodejs-fkers/musicpedia
├── [email protected]

Ответ 11

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

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

Ответ 12

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

npm install ejs --save

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

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

Ответ 13

После того, как вы установили Express V xxx, вам нужно выбрать движок представления шаблона. Есть много действительно простых для изучения. Мое личное желание - EJS.

Другие действительно хорошие и легкие в освоении могут быть:

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

npm install ejs

Или, если вы используете пряжу:

yarn add ejs

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

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

var ejs = require('ejs');

Ответ 14

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

Ответ 15

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

Ответ 16

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

Ответ 17

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

Ответ 18

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

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

npm install ejs --save 

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

Ответ 19

Давным-давно, когда та же проблема произошла со мной.

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

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

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

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

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