2016-09-15 14 views
2

Expressを持つノードサーバーがあります。私は私のコードは次のようになりますし、私の意見では正しいはずにもかかわらず、モジュール「HTML」のエラーを見つけることができません取得する:Express NodeJS 'html'モジュールを見つけることができません

app.set('views', path.join(__dirname, 'build/views')); 
app.use(favicon(path.join(__dirname, "build/favicon.ico"))); 
app.use('/scripts', express.static(path.join(__dirname, 'node_modules'))); 
app.use(express.static(path.join(__dirname, 'build'))); 

app.get('/', function(req, res){ 
    res.render('index.html'); 
}); 

答えて

4

あなたはHTML

ためengineを設定する必要があなたのメインのファイルにこのコードを含めます

var engines = require('consolidate'); 

app.engine('html', engines.mustache); 
app.set('view engine', 'html'); 
+0

'res.sendFile(path.join(__ dirname + '/build/views/index.html')); ' これはいい解決策になるのだろうか、それともあなたの解決策が良いか/いい? – thigi

+0

コード構造の記述に依存します。私たちは '静的な'ページを取得するために 'views'を好む – abdulbarik

+0

これはhtmlで動作しません+ – thigi

0

あなたが静的index.htmlファイルを表示しようとしているようだが、それはテンプレートであるかのようにあなたはそれを提供しています。恐らくExpressは存在しないhtmlテンプレート・フォーマットのモジュールを探しています。

レンダリングテンプレート用のres.renderではなく、インデックスを静的ファイルとして送信することがあります。

以前は、静的ファイルをExpressで提供する例を書いていました。これは、GitHubの上で利用可能です:私は、より詳細にそれを説明するところ

は、my other answerも参照してください。

2

あなたが唯一のクライアントにサーバーからすべての変数を渡さず、静的なファイルを提供する場合、最も簡単な方法は、次のようになります。

res.sendFile(path.join(__dirname + '/build/views/index.html')); 

あなたは、クライアント側のためのAngularJSを使用している場合は特に。上記の解決策の問題は、口ひげが変数認識として{{}}を使用することです。 AngularJSはエラーを引き起こす可能性があります!

関連する問題