#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
inpackages.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:
у меня была та же проблема. Итак, я сделал следующее, и это сработало для меня.
решение:
- запустите «npm init» в каталоге проекта, если это еще не сделано.
- установите 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 устранила мою проблему
Это сработало для меня,
- На вашем терминале или cmd -> Перейдите в каталог приложений,
- cd pathtoyourapp/AppName
- повторите установку ‘npm install’
- повторно запустите ‘npm install express’
- повторно запустите ‘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",}
**