Error: Cannot find module 'ejs'

匿名 (未验证) 提交于 2019-12-03 01:38:01

问题:

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

回答1:

I had this exact same problem a couple of days ago and couldn't figure it out. Haven't managed to fix the problem properly but this works as a temporary fix:

Go up one level (above app.js) and do npm install ejs. It will create a new node_modules folder and Express should find the module then.



回答2:

Install express locally

(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.



回答3:

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.



回答4:

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



回答5:

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



回答6:

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.



回答7:

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 


回答8:

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.



回答9:

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 installing 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 musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia ├―― ejs@1.0.0 


回答10:

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.



回答11:

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.



回答12:

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

and then in the terminal

npm install ejs --save  

resolves the issue



回答13:

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).



回答14:

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



回答15:

Reinstalling npm, express and ejs fixed my problem

This one worked for me,

  1. On your terminal or cmd -> Go to your apps directory,
  2. cd pathtoyourapp/AppName
  3. rerun your 'npm install'
  4. rerun your 'npm install express'
  5. rerun your 'npm install ejs'

after that, the error was fixed.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!