2011-10-13 138 views
55

这里是我完整的错误:错误:无法找到模块“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); 

在我的文件夹中,我已经安装在node_modules EJS其中我使用了npm install ejsenter image description here所以我的问题是..什么给了?我做错了什么,以便节点在明确安装时找不到EJS?

谢谢

+0

很抱歉,但笑@消息:“德groeten” – Rob

+1

是否安装全局表达什么?如果我没记错的话,我在本地安装express和ejs时遇到了问题。尝试在您的项目文件夹或全局模块文件夹中的ejs中安装express。 – pkyeck

回答

87

几天前,我有这个完全相同的问题,无法弄清楚。还没有设法正确地解决这个问题,但这可以作为一个临时修复:

向上移动一层(上面的app.js)并做npm install ejs。它会创建一个新的node_modules文件夹,然后Express会找到该模块。

+7

'npm install ejs -g'可能是一个更清洁的解决方法。 ('-g'全球安装) –

+3

我做了-g的事情,它仍然无法找到它.. – BigOmega

+1

虽然部署我的应用程序Openshift,我有同样的错误,发现我忘了一个依赖添加到'EJS '在'packages.json'中。现在它工作正常('npm install'在下次重启时自动完成)。 –

7

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

+0

这是超级重要的,经常错过,+1给你皮特! – javabeangrinder

+1

我没有NODE_PATH env var,所以一个简单的'export NODE_PATH = .'为我的项目工作,它的依赖关系在它自己的目录下。干杯 – Greg

2

我有这个问题。我使用节点检查器进行调试,并且发现从快速源文件所在的node_modules文件夹中未安装ejs。所以我在那里安装它,它工作。

npm install -g ejs没有把它放在我期望的地方,尽管NODE_PATH被设置为同一个node_modules文件夹。 Prob做错了,刚开始使用节点。

14

安装表达本地

npm install express而在项目的根目录)


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

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

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

4

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

我一直在使用步骤提快递引导http://expressjs.com/guide.html

4

我我的情况,我只是在包手动添加EJS安装快车。JSON

{ 
    "name": "myApp" 
    "dependencies": { 
    "express": "^4.12.2", 
    "ejs": "^1.0.0" 
    } 
} 

和运行NPM安装(可能是你需要与须藤运行) 请注意,EJS默认看起来views目录

1

我有同样的问题也解决在我的项目目录中安装express后。以前我使用npm install命令将其安装在全局范围内,并带-g选项。

3

我安装了:表达,并与选项--save EJS:

NPM安装EJS --save 故宫安装快车--save

这样的快递和EJS是依赖条件的package.json文件。

0

对我而言,这是一个愚蠢的错误 - 它是中间件中的一个错字。我写了app.set('view engine', 'ejs.');这个点引起了错误。我安装EJS,并表示当地

2

STEP 1

npm ls | grep ejs在项目的根级检查,如果您已经添加ejsdependency到项目中。

如果不是,请将其作为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"                   
    }                          
} 

STEP 2下载的依赖性

npm install 

步骤3检查EJS模块

$ npm ls | grep ejs 
[email protected] /Users/prayagupd/nodejs-fkers/musicpedia 
├── [email protected] 
+0

太棒了!上述所有,但没有再次运行npm安装。谢谢。 –

+0

您是否在添加''ejs“后添加'npm install':”^ 1.0.0“'?如果是这样,请删除该行并以另一种方式安装为'npm install ejs' - https://www.npmjs.com/package/ejs。它应该添加一个'ejs:latest version'到package.json – prayagupd

+1

我的意思是它工作得很好。谢谢。 –

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

,然后在终端

npm install ejs --save 

解决问题

1

在我而言,没有愚蠢的语法错误,但同样的错误arised。 我已经在全球安装了ejs和ejs-mate。我在本地安装它,发现我的错误已解决。

0

请确保您的package.json文件中的依赖项是最新的。在确保您的NPM是最新版本(最新)之后,尝试重新安装一个。它为我工作。我建议你运行npm install的包(这是什么工作在我自己的情况下,因为我手动添加了依赖关系后拒绝工作)。

2

本地安装而不是全局安装。那么你的项目可以在任何机器上运行,没有任何错误。我认为它更好。

npm install express --save 
npm install ejs --save 
0

重新安装NPM,快递和EJS固定我的问题

对我来说这一个工作,

  1. 在终端或CMD - >转到您的应用程序目录,
  2. CD pathtoyourapp/AppName
  3. 重新运行您的'npm install'
  4. 重新运行您的'npm install express'
  5. 重新运行 '故宫安装EJS'

后,该错误是固定的。