2011-10-13 262 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'

後,該錯誤是固定的。

相關問題