Ошибка: не удается найти модуль 'ejs' - PullRequest
71 голосов
/ 13 октября 2011

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

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 так что мой вопрос ... что дает?Что я делаю не так, что узел не может найти EJS, когда он явно установлен?

Спасибо

Ответы [ 19 ]

120 голосов
/ 13 октября 2011

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

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

19 голосов
/ 14 марта 2013

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

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


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

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

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

8 голосов
/ 21 августа 2012

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

6 голосов
/ 05 марта 2015

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

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

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

4 голосов
/ 15 октября 2017

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

npm install express --save
npm install ejs --save
4 голосов
/ 17 января 2014

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

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

3 голосов
/ 18 декабря 2015

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

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

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

3 голосов
/ 10 января 2018

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

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

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

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

2 голосов
/ 07 марта 2013

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

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

2 голосов
/ 13 октября 2016

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