2017-05-05 2 views
0

私はnode.jsで新しいです。私のプロジェクトにはMEANを使用しています。フッター。フッタのために私はフラッシュメッセージのためにAngularを使うことができません(私はどんなコントローラも持っていません)。通常のnode.jsを使用すると、私はフラッシュメッセージを表示する必要があります。ここで明示的なフラッシュ通知で「デフォルトエンジンが指定されておらず、拡張機能が提供されていません」

が、これは "いいえデフォルトエンジンが指定されていないと、拡張子が提供されなかった" というエラーが表示さ

<!DOCTYPE html> 
<html lang="en"> 

<body> 
    <!-- footer --> 
<div> 
<form action="/subscribe" method="POST"> 

    <input name="name" id="name" type="text" placeholder="Enter your email address" /><input type="submit" name="submit" id="submit" class="newsletter-submit" /> 


</form> 
</div> 

</body> 
</html> 

私のコードserver.js

var express = require('express'); 
var bodyParser = require('body-parser'); 
var app = express(); 
var session = require('express-session'); 
var flash   = require('express-flash-notification') 
var cookieParser = require('cookie-parser') 



app.use(cookieParser("hash")); 
app.use(session({secret:"hash", cookie: { maxAge: 60000 }, resave: true, saveUninitialized: true })) 

app.use(bodyParser.urlencoded({extended:true})); 
app.use(bodyParser.json()); 
app.use(express.static('public')); 

app.use(flash(app)); 
app.use(express.static(__dirname + '/client')); 
app.use('/admin', express.static(__dirname + '/admin')); 

app.use('/', express.static(__dirname + '/client', { redirect: false })); 



app.post('/subscribe', function (req, res) 
{ 
    if(req.body.name == '[email protected]') 
    { 
     //return console.log(error); 
     //res.send(200); 
     req.flash('info', 'Thank you', 'home') 

    } 
    else 
    { 
     res.send(500); 
    } 





}); 




app.listen(3000, function(){ 
    console.log('server is running on port 3000..'); 
}); 

とhtmlファイル

です。

これを修正する方法と、HTMLページにメッセージを表示する方法。私は使用例のヒスイのために、あなたはビューエンジンが欠落している

+0

[エラー:デフォルトのエンジンが指定されていないと、拡張子が提供されていない]の可能性のある重複したことによってそれを解決します(http://のstackoverflow。 com/questions/23595282/error-no-default-engine-was-specified-and-no-extension-was-provided) – Vasan

答えて

0

ありがとう

{{info}} 

を試してみましたが、その

を働いていない:

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

使用したい場合ejsの代わりにhtmlフレンドリな構文を使用し、htmlファイルを.ejs拡張子で保存します。

app.engine('html', require('ejs').renderFile); app.set('view engine', 'html');

ルーティングが定義する前には、ミドルウェアのようres.locals変数を使用してフラッシュ変数をレンダリングした後:今

res.locals.info = req.flash.info;

この{{情報}}変数の使用を直接res.locals経由オブジェクト。

+0

jadeやejsを使用せずに使用できる他の方法があります – Athi

0

私は、Ajaxリクエスト

<form onsubmit="submit()" method="POST"> 

    <input name="name" id="name" type="text" placeholder="Enter your email address" /> 
<input type="submit" name="submit" id="submit" class="newsletter-submit" /> 


</form> 
<label id="results" class="success" style="display: none;"></label> 

Ajaxのcalll

function submit() 
    { 
    var parameters = { search: $('#name').val() }; 
     $.post('/subscribe',parameters, function(data) 
     { 
     $('#results').html(data); 
    }); 
    } 
関連する問題