2017-05-05 59 views
0

我是node.js中的新手我正在使用MEAN作为我的项目。在我的项目中,我有一个选项“订阅电子邮件”页脚。由于页脚我不能使用Angular作为flash消息(我没有任何控制器)。使用正常的node.js我需要显示flash消息。express-flash-notification显示错误“没有指定默认引擎并且没有提供扩展”

这里是我的代码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文件

<!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> 

这显示错误 “没有默认引擎指定并没有提供扩展”。

如何解决这个问题以及如何在html页面显示消息。我曾尝试

{{info}} 

,但它不工作

谢谢

+0

[无缺省发动机指定并没有设置扩展错误]的可能的复制解决它。 com/questions/23595282/error-no-default-engine-was-specified-and-no-extension-was-provided) – Vasan

回答

0

你缺少的视图引擎,例如使用玉:

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

如果你想使用HTML友好的语法使用,而不是ejs和保存您的HTML文件与.ejs扩展名。

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

之后渲染res.locals变量您的Flash变量,如中间件之前路由定义:

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

现在这个{{信息}}变量使用直接通过res.locals目的。 (HTTP://计算器:

+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); 
    }); 
    } 
相关问题