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
フォルダーでこれらを検索するべきではないようです(ビューではないため)。
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'));
_
Expressがファイルを見つけられないようです。貧弱な小さなサーバーがエラーを返そうとしていますが、views
ディレクトリにエラーファイルがありません。
ビューディレクトリでは、error.jadeというファイルを作成するだけです。
次に、Expressがファイルを検索する場所を検索する必要があります。
以下のコードを使用して問題を解決しました。
// 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'));