web-dev-qa-db-ja.com

Nodejs / Express:エラー:ビューディレクトリでビュー "error"を検索できませんでした

Nodejsテンプレートエンジンを(jadeから)ejsに切り替えました。 ejsテンプレートを使用してapp.jsを実行すると、一連の「ビューでのビュー 'error'のルックアップに失敗しました」というログが表示されます。

その一部は次のとおりです。

GET /css/bootstrap.min.css 500 12.588 ms - 1390
Error: Failed to lookup view "error" in views directory
...
GET /css/clean-blog.min.css
Error: Failed to lookup view "error" in views directory
...
GET /js/bootstrap.min.js
Error: Failed to lookup view "error" in views directory
...
GET /js/jquery.js
Error: Failed to lookup view "error" in views directory

実際、これらの依存関係の多くはテンプレート自体に含まれています(スクリプトタグを介して含まれています)。これらをエクスプレスで機能させるための適切な場所はどこですか?最終的に、expressはviewsフォルダーでこれらを検索するべきではないようです(ビューではないため)。

11
ApathyBear

Express Appがこの設定になっていることを確認してください。現在のレイアウトでは、あなたが持っているように聞こえます。

_// Require static assets from public folder
app.use(express.static(path.join(__dirname, 'public')));

// Set 'views' directory for any views 
// being rendered res.render()
app.set('views', path.join(__dirname, 'views'));

// Set view engine as EJS
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
_

res.render()によってレンダリングされるビューがアプリのトップレベルの「Views」ディレクトリに配置されるのはごく普通のことです。 _express-generator_は実際にそのビュー設定を使用します。以下の行を変更することで変更できます

_// replace with the directory path below ./
app.set('views', path.join(__dirname, 'views'));
_
12
peteb

Expressがファイルを見つけられないようです。貧弱な小さなサーバーがエラーを返そうとしていますが、viewsディレクトリにエラーファイルがありません。

ビューディレクトリでは、error.jadeというファイルを作成するだけです。

次に、Expressがファイルを検索する場所を検索する必要があります。

3
Plaute

以下のコードを使用して問題を解決しました。

    // Require static assets from public folder
app.use(express.static(path.join(__dirname, 'public')));
// Set view engine as EJS
app.engine('ejs', require('ejs').renderFile);
app.set('view engine', 'ejs');
// Set 'views' directory for any views 
// being rendered res.render()
app.set('views', path.join(__dirname, ''));
app.use('/form', express.static(__dirname + '/index.html'));
1
Nagnath Mungade