nodejs实战案例(Express框架+mongoDB)——(17)——404页面

路由index.js的

app.get('/error',function(req,res){});

修改为

app.get('*',function(req,res){

    res.render('404', { 

      title:"知道",

      name:"问答平台",

      user:req.session.user,

      error: req.flash('error').toString()

    });

  });


在views中添加404.ejs,内容如下:

<%- include header %>

<div id="wrap">

  <div class="container">

    <div class="page-header">

      <h1>404</h1>

      <% if (locals.error) { %>

        <div><%= locals.error %> </div>

      <% } %>

  </div>

</div>

<%- include footer %>


我们运行尝试一下:

这时我们打开的页面如下:



所有的样式都没用了,我们打开源代码

可以看到下面的引用都挑战到一个没用样式的404页面了

<link rel="stylesheet" href="stylesheets/style.css">

这里是由于路由index.js也将引入的地址解析了,localhost:3000/stylesheets/style.css 在路由中没用规则,所有都访问了执行了

res.render('404', { 

      title:"知道",

      name:"问答平台",

      user:req.session.user,

      error: req.flash('error').toString()

    });

 

这里我们需要在app.js中调整下

app.use(app.router);

app.use(express.static(path.join(__dirname, 'public')));

位置换下:

app.use(express.static(path.join(__dirname, 'public')));

app.use(app.router);


这里先规定好静态引用的地址,然后启用路由规则,就会避免将引入的静态文件路由处理了。


下面在打开页面测试下,就没用问题了,然后我们继续测试,发现http://localhost:3000/admin 打开也是跳转到了404 页面,

这里也是因为路由解析的原因,因为我们的app.get('*',function(req,res){})

在admin,baike的解析前面,所以等不到解析它们,就被* 处理了


我们需要将app.get('*',function(req,res){})移动到最末尾,这时在测试,就没用问题了。


好了,整个nodejs实战案例(Express框架+mongoDB)完结了,第一个自己摸索的网站,欢迎大家挑错。我后面会把代码上传到github上


你可能感兴趣的:(nodejs实战案例(Express框架+mongoDB)——(17)——404页面)