错误:找不到模块'ejs'

Sha*_*oon 73 ejs node.js express

这是我的完整错误:

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)
Run Code Online (Sandbox Code Playgroud)

我的源代码也很简单:

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);
Run Code Online (Sandbox Code Playgroud)

在我的文件夹中,我在我使用的node_modules中安装了ejs npm install ejs. 在此输入图像描述所以我的问题是......是什么给出的?我做错了什么,以便当我清楚地安装它时节点找不到EJS?

谢谢

evi*_*ery 127

几天前我遇到了同样的问题而无法理解.没有设法正确解决问题,但这可以作为临时修复:

上升一级(高于app.js)然后做npm install ejs.它将创建一个新的node_modules文件夹,然后Express应该找到该模块.

  • `npm install ejs -g`可能是一个更简洁的解决方法.(`-g`用于全局安装) (13认同)
  • 我不认为你想在全球范围内安装一个“node_module”,我之前也做过同样的事情,当你部署时它会变得很痛苦 (4认同)
  • 在将我的应用程序部署到Openshift时,我遇到了同样的错误,并注意到我忘了在`packages.json`中添加对`ejs`的依赖.现在它工作正常(`npm install`在下次重启时自动完成). (2认同)

Wil*_*ill 20

在本地安装快递

(npm install express在项目的根目录中)


你的项目依赖于两个expressejs,所以你应该他们俩列为在你的依赖package.json.

当您运行的方式npm install在你的项目目录,它会同时安装expressejs,这样var express = require('express')将是本地快递的安装(知道的ejs,你本地安装的模块),而不是全球性的,它没有.

一般来说,明确列出您的所有依赖项是个好主意,package.json即使其中一些可能已经全局安装,因此您没有这些类型的问题.


小智 8

我遇到过同样的问题.一旦我将环境变量NODE_PATH设置为我的模块的位置(在我的情况下为/usr/local/node-v0.8.4/node_modules),问题就消失了.如果需要指定多个目录,PS NODE_PATH接受以冒号分隔的目录列表.


lev*_*von 6

我的情况,我只是在package.json中手动添加了ejs :

 {
   "name": "myApp"
   "dependencies": {
     "express": "^4.12.2",
     "ejs": "^1.0.0"
   }
 }
Run Code Online (Sandbox Code Playgroud)

并运行npm install(可能需要使用sudo运行它)请注意,默认情况下,ejs会查看视图目录


小智 6

回到同样的问题发生在我身上的时候。

JSON 文件中的 ejs 存在依赖性,尝试在本地和全局安装它,但没有奏效。

然后我所做的是通过以下方式手动添加模块:

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

app.engine('ejs', require('ejs').__express);
Run Code Online (Sandbox Code Playgroud)

然后它起作用了。


S K*_*mar 6

安装 Node Express 项目后,您需要安装 ejs 或 pug 包

你可以尝试使用节点

npm install ejs 
npm install pug
Run Code Online (Sandbox Code Playgroud)

或者你可以尝试用纱线

yarn add ejs
yarn add pug
Run Code Online (Sandbox Code Playgroud)

全球或本地


Ram*_*kar 5

我在 express 目录级别ejs使用命令npm install ejs进行安装,这解决了我的问题。

我已经使用快递指南http://expressjs.com/guide.html 中提到的步骤安装快递


Tim*_*sen 5

安装 Express V xxx 后,您需要选择模板视图引擎。有很多确实很容易学习。我个人的首选是EJS

其他真正伟大且易于学习的可能是:

要安装 EJS(并修复错误),请在项目的根目录中运行:

npm install ejs
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是 Yarn:

yarn add ejs
Run Code Online (Sandbox Code Playgroud)

接下来,您需要 require 该模块,因此在需要 express 的位置打开文件(通常是 app.js 或 server.js)

添加如下var express = require('express');

var ejs = require('ejs');
Run Code Online (Sandbox Code Playgroud)