Ошибка: не удается найти модуль '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
.
так что мой вопрос.. что дает? Что я делаю неправильно, чтобы node не смог найти EJS, когда я его явно установил?
Спасибо
Ответы
Ответ 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 устранила мою проблему
Этот работал для меня,
- На вашем терминале или cmd → Перейдите в каталог приложений,
- cd pathtoyourapp/AppName
- перезапустите вашу 'npm install'
- перезапустите ваш 'npm install express'
- перезапустите ваш '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);
Тогда это работает.