エラー:モジュール 'ejs'が見つかりません


85

これが私の完全なエラーです:

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 ejsます。 ここに画像の説明を入力してくださいだから私の質問は..何が与えますか?明確にインストールされているときにノードがEJSを見つけられないように、何が間違っているのですか?

ありがとう


申し訳ありませんが、笑@メッセージ: 'De groeten'
Rob

1
Expressをグローバルにインストールしましたか?私が正しく覚えていれば、expressをグローバルにインストールし、ejsをローカルにインストールするときに問題が発生しました。また、プロジェクトフォルダーにexpressをインストールするか、グローバルモジュールフォルダーにejsをインストールしてみてください。
pkyeck 2011年

私も同じ問題を抱えていました。最終的にnode_modulesディレクトリを削除し、新規インストールnpm install-gを実行しました。
ロバートウォルターズ

回答:


149

私は数日前にこれとまったく同じ問題を抱えていて、それを理解することができませんでした。問題を適切に修正できていませんが、これは一時的な修正として機能します。

1レベル上(app.jsより上)に移動しますnpm install ejs。新しいnode_modulesフォルダーが作成され、Expressがモジュールを見つけるはずです。


15
npm install ejs -gよりクリーンな回避策になる可能性があります。(-gグローバルインストールの場合)
Farzher 2012年

2
アプリをOpenshiftにデプロイしているときに同じエラーが発生し、に依存関係を追加するのを忘れていることに気付きejsましたpackages.json。これで正常に動作します(npm install次回の再起動時に自動的に実行されました)。
バスティアンヤンセン

1
私はあなたがnode_moduleグローバルにインストールしたいとは思わない、私は以前に同じことをした、そしてあなたが展開しているときそれは苦痛になる
pourmesomecode 2015年

1
'package.json'ファイルに依存関係として 'express'モジュールを追加しただけで、機能し始めました。したがって、「ejs」と「express」の両方が依存関係として言及されていることを確認してください。
Prateek 2016

明らかに、私は主な回答に賛成しましたが、(-g)グローバルインストールを提案してくれた@Stephen BugsKamenarの功績も認めたいと思いました。私は実際に不正行為をして両方を実行し(怠惰な私)、アプリを再起動するとすぐに機能しました。
ベネディクト氏

22

Expressをローカルにインストールする

((npm install expressプロジェクトのルートディレクトリにある間)


あなたのプロジェクトは両方に依存しています expressしてejs、ので、あなたの中の依存関係、それらの両方をリストする必要がありますpackage.json

そうnpm installすれば、プロジェクトディレクトリで実行するexpressejs、との両方がインストールvar express = require('express')されるので、ejs、グローバルインストールではなく、express(ローカルにインストールしたモジュールを認識している)のローカルインストールになります。

一般に、依存関係のpackage.json一部がすでにグローバルにインストールされている場合でも、すべての依存関係を明示的にリストすることをお勧めします。そのため、これらのタイプの問題は発生しません。


9

私も同じ問題を抱えていました。環境変数NODE_PATHをモジュールの場所(私の場合は/usr/local/node-v0.8.4/node_modules)に設定すると、問題は解決しました。PS NODE_PATHは、複数のディレクトリを指定する必要がある場合、コロンで区切られたディレクトリのリストを受け入れます。


これは非常に重要で、見逃されることがよくあります。ピートに+1してください。
javabeangrinder 2012

1
NODE_PATH env varがなかったので、export NODE_PATH=.独自のディレクトリの下に依存関係があるプロジェクトで簡単に機能しました。乾杯
グレッグ

9

私の場合、package.jsonに手動でejsを追加しました:

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

そして、npm installを実行します(sudoで実行する必要があるかもしれません)ejsはデフォルトでviewsディレクトリに見えることに注意してください


6

同じ問題が私に起こったときの昔。

JSONファイルのejsに依存関係があり、ローカルおよびグローバルにインストールしようとしましたが、機能しませんでした。

次に、次の方法でモジュールを手動で追加しました。

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

app.engine('ejs', require('ejs').__express);

その後、それは動作します。


これは、サブモジュールで依存関係として表現している場合に特に当てはまります
user2105 0420年

これにより、サーバーをWebpack経由でコンパイル(またはtypescriptを使用しない場合は単にバンドル)するときに[ejs]を検出できるようになります。(ただし、ビューをdistにコピーするか、さらに作業を行う必要があります。)
Daniel


4

グローバルにインストールするのではなく、ローカルにインストールします。そうすれば、プロジェクトはエラーなしでどのマシンでも実行できます。

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

3

私はこの問題を抱えていました。node-inspectorを使用してデバッグしたところ、エクスプレスソースファイルが存在するnode_modulesフォルダーから、ejsがインストールされていないことがわかりました。そこでインストールして動作しました。

npm install -g ejsNODE_PATHが同じnode_modulesフォルダーに設定されているにもかかわらず、期待した場所に配置しませんでした。間違っている可能性があります。ノードから始めたばかりです。


3

私はオプション--save:を指定してexpressとejsの両方をインストールしました。

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

このように、expressとejsはdependeciespackage.jsonファイルです。


3

npm、express、ejsを再インストールすると問題が解決しました

これは私のために働いた、

  1. ターミナルまたはcmd->アプリディレクトリに移動し、
  2. cd pathtoyourapp / AppName
  3. 'npminstall'を再実行します
  4. 'npm installexpress'を再実行します
  5. 'npm installejs'を再実行します

その後、エラーが修正されました。


3

Express V xxxをインストールした後、テンプレートビューエンジンを選択する必要があります。本当に簡単に学ぶことがたくさんあります。私の個人的な頼みの綱EJSですです。

他の本当に素晴らしくて学ぶのが簡単かもしれません:

EJSをインストールするには(そしてエラーを修正するには)プロジェクトのルートで実行します。

npm install ejs

または、Yarnを使用している場合:

yarn add ejs

次に、モジュールが必要になるので、エクスプレスが必要な場所(通常はapp.jsまたはserver.js)でファイルを開きます。

以下に追加 var express = require('express');

var ejs = require('ejs');

3

私も同じ問題を抱えていました。だから私は次のことをしました、そしてそれは私のために働きました。

解決:

  1. まだ実行していない場合は、プロジェクトディレクトリで「npminit」を実行します。
  2. ejsをインストールし、次のように表現します。

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

そうすることで、package.jsonファイルに必要な依存関係を作成します


2

ステップ1

参照してくださいnpm ls | grep ejsあなたはすでに追加されているかどうかを確認するために、プロジェクトのルートレベルにejs dependencyあなたのプロジェクトに。

そうでない場合は、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"                                                                          
  }                                                                                                    
}   

ステップ2依存関係をダウンロードする

npm install

ステップ3ejsモジュールを確認します

$ npm ls | grep ejs
musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia
├── ejs@1.0.0

すごい!上記のすべてを実行しましたが、npminstallを再度実行しませんでした。ありがとう。
N. Osil 2017

npm install追加した後、機能しなかったと言ってい"ejs": "^1.0.0"ますか?もしそうなら、その行を削除して別の方法をインストールnpm install ejs- npmjs.com/package/ejsejs: latest versionpackage.jsonにを追加する必要があります
prayagupd 2017

2

に依存関係を追加しpackage.jsonてから実行npm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}

2

ejsテンプレートエンジンがマシンに正しくインストールされていないと思います。npmを使用してテンプレートエンジンをインストールするだけです

npm install ejs --save

次に、app.jsに次のコードを含めます

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

1

Expressをプロジェクトディレクトリにインストールした後、同じ問題が解決します。以前は、npminstallコマンドで-gオプションを使用してグローバルスコープにインストールしました。


1

私の場合、ばかげた構文エラーはありませんでしたが、同じエラーが発生しました。私はejsとejs-mateをグローバルにインストールしました。ローカルにインストールしたところ、エラーが解決したことがわかりました。


1

package.jsonファイルの依存関係が最新であることを確認してください。NPMが最新バージョン(最新)であることを確認した後、一度に1つずつ再インストールしてみてください。それは私のために働いた。npm installパッケージを実行することをお勧めします(依存関係を手動で追加したために機能しなかった後、私自身の場合は機能しました)。


1

私の場合、それはばかげた間違いでした-それはミドルウェアのタイプミスでした。app.set('view engine', 'ejs.');ドットを書いたのでエラーが発生しました。ejsとexpressをローカルにインストールしました


1

すべての依存関係がインストールされていることを確認します。 npm install

私は自分のために簡単なアプリを作っていましたが、エクスプレスを追加するのを忘れていました。上記のエラーをスローしました。


1

ejsで同じエラーが発生した場合は、実行するだけnode install ejs です。これにより、ejsが再度インストールされます。

次に、npm installnode_modulesを再度インストールするために実行します。それは私にとってはうまくいきます。


1

アプリを初めて実行する前にejsをインストールするのを忘れた後、この問題が発生しました。後でインストールした後、何らかの理由でejsが表示されませんでした。私は、迅速、清潔、そして実行することにより、表現を再インストールすることでした。この問題の有効な解決策たnpm uninstall express後、npm install expressサーバーを再起動する前にローカルディレクトリにします。


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

そしてターミナルで

npm install ejs --save 

問題を解決します



0

npm install ejs --save私のために働いた!✅

goormIDEで、私はこのファイル構成を持っていました:

  • コンテナ
    • main.js
    • package-lock.json
    • package.json
    • node_modules
    • ビュー
      • home.ejs

私のmain.jsファイルには、このルートもありました

app.get("/", function(req, res){
res.render("home.ejs");
})

npm install ejs -gpackage.json内に対応する依存関係を追加しませんでした。 npm install ejs --saveした。コンテナディレクトリからコマンドラインを実行しました。手動で、次のようにpackage.jsonに追加できます:**

"dependencies": {
    "ejs": "^3.0.2",}

****



0

Expressをローカルにインストールすると、同じ問題が解決しました。npm i express --save


SOへようこそ!なぜ、どのように?Expressは、デフォルトで開発用にローカルにインストールされます。
peterh -復活モニカ

0

私は同じ問題を抱えていて、与えられた解決策のいくつかを試しましたが、それでも機能しませんでした。プロジェクトのルートフォルダで「npxyarn」コマンドを実行するだけで、それだけでした。


-1

私がgoormIDEで作業していたときに、エラーが発生しました。これは基本的に、ノードパッケージが実行中のファイル内に存在しない場合に発生します。app.jsまたはhome.jsが実行される場所。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.