Here is my complete error:
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)
My source code is also very simple:
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);
In my folder, I have ejs installed in node_modules which I got using npm install ejs
.
so my question is.. what gives? What am I doing wrong so that node can't find EJS when I clearly have it installed?
Thanks
I my case, I just added ejs manually in package.json:
{
"name": "myApp"
"dependencies": {
"express": "^4.12.2",
"ejs": "^1.0.0"
}
}
And run npm install (may be you need run it with sudo) Please note, that ejs looks views directory by default
Install it locally rather installing it globally. Then your project may be run on any machine without any error.I think its better.
npm install express --save
npm install ejs --save
I installed ejs
using command npm install ejs
in express directory level and this solved my problem.
i have install express using steps mention in express guide http://expressjs.com/guide.html
i had the same issue and tried a few of the given solutions but it still didn't work. all i did was to run the "npx yarn" command in the root folder of my project and that was it.
Installing express locally solved my same problem. npm i express --save
I have the same issue it resolve after installing the express in my project directory. previously i install it in global scope with -g option with npm install command.
Way back when the same issue happened with me.
Dependency was there for ejs in JSON file, tried installing it locally and globally but did not work.
Then what I did was manually adding the module by:
app.set('view engine','ejs');
app.engine('ejs', require('ejs').__express);
Then it works.
After you've installed Express V x.x.x You need to choose an template view-engine. There are many really easy to learn. My personal go-to is EJS.
Other really great and easy to learn could be:
To install EJS (And fix your error) Run in root of your project:
npm install ejs
Or if you're using Yarn:
yarn add ejs
Next you'll need to require the module, so open up your file where you require express (usually app.js or server.js)
add below var express = require('express');
var ejs = require('ejs');
Add dependency in package.json
and then run npm install
{
...
...
"dependencies": {
"express": "*",
"ejs": "*",
}
}
I installed both: express and ejs with the option --save:
npm install ejs --save npm install express --save
This way express and ejs are dependecies package.json file.
I had the same issue. Once I set environment variable NODE_PATH to the location of my modules (/usr/local/node-v0.8.4/node_modules in my case) the problem went away. P.S. NODE_PATH accepts a colon separated list of directories if you need to specify more than one.
i had the same problem. So i did the following and it worked for me.
solution:
npm install ejs --save
npm install express --save
by doing so it creates the required dependencies in the package.json file
In my case, I just uninstall then install ejs again.
npm uninstall ejs
then
npm install ejs
The error hit me when i was working on goormIDE. This happens basically when node packages arent inside the running file. The place where app.js or home.js is executed.
I face same error for ejs, then i just run node install ejs
This will install ejs again.
and then also run npm install
to install node_modules again.
That's work for me.
Ensure all dependencies are installed. npm install
I was making a quick app for myself and I had forgotten to add express. Threw the above error.
In my case it was a stupid mistake- it was a typo in the middleware. I wrote app.set('view engine', 'ejs.');
the dot caused the error. I installed ejs and express locally
Reinstalling npm, express and ejs fixed my problem
This one worked for me,
after that, the error was fixed.
npm i ejs --force
this worked for me
STEP 1
See npm ls | grep ejs
at root level of your project to check if you have already added ejs
dependency
to your project.
If not, add it as dependencies
to your project. (I prefer adding dependency to package.json
instead of npm install
ing the module.)
eg.
{
"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"
}
}
STEP 2 download the dependencies
npm install
STEP 3 check ejs module
$ npm ls | grep ejs
[email protected] /Users/prayagupd/nodejs-fkers/musicpedia
+-- [email protected]
In my case there was no silly syntax error, but same error arised. I had installed ejs and ejs-mate globally. I installed it locally and found my error resolved.
I had this problem. I debugged using node-inspector and saw that from the node_modules folder where the express source files were, ejs was not installed. So I installed it there and it worked.
npm install -g ejs
didn't put it where I expected it to despite NODE_PATH being set to the same node_modules folder. Prob doing it wrong, just started with node.
(npm install express
while in the project's root directory)
Your project depends on both express
and ejs
, so you should list them both as dependencies in your package.json
.
That way when you run npm install
in you project directory, it'll install both express
and ejs
, so that var express = require('express')
will be the local installation of express (which knows about the ejs
module that you installed locally) rather than the global one, which doesn't.
In general it's a good idea to explicitly list all dependencies in your package.json
even though some of them might already be globally installed, so you don't have these types of issues.
kindly ensure that your dependencies in your package.json files are up to date. Try reinstalling them one at a time after also ensuring that your NPM is the latest version (up-to-date). It worked for me. I advise you to run npm install
for the packages(thats what worked in my own case after it refused to work because I added the dependencies manually).
I think ejs template engine is not properly installed on your machine. You just install the template engine using npm
npm install ejs --save
then include the following code in app.js
app.set('view engine', 'ejs')
I ran into this problem after I forgot to install ejs before the first time I ran my app. For some reason ejs was not being seen after installing it later. I found a quick, clean, and effective solution to this problem which was to reinstall express by running npm uninstall express
then npm install express
in the local directory before restarting the server.
npm install ejs --save
worked for me ! ?
On goormIDE, I had this file configuration :
In my main.js file, I also had this route
app.get("/", function(req, res){
res.render("home.ejs");
})
npm install ejs -g
didn't add the corresponding dependency within the package.json.
npm install ejs --save
did. I executed the command line from the container directory. Manually it could have been added into the package.json with :
**
"dependencies": {
"ejs": "^3.0.2",}
**
app.set('view engine', 'ejs')
and then in the terminal
npm install ejs --save
resolves the issue
Source: Stackoverflow.com