0

目前,这就是我的 nodejs/expressjs 服务器端代码:

// Init Express Web Framework
var express = require('express');
var app = express();
var path = require('path');


// Set view engine to EJS & set views directory
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set('views', path.resolve(__dirname, 'client', 'views'));

app.use(express.static(path.resolve(__dirname, 'client')));

//app.use(function(req, res, next) {
//    res.header('Access-Control-Allow-Origin', '*');
//    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
//    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
//    if (req.method === 'OPTIONS') {
//        res.send(200);
//    }
//    else {
//        next();
//    }
//});


// Database Connection
var mongoose = require('mongoose');
var configDB = require('./server/config/database.js');
require('./server/routes/capture');
require('./server/routes/comment');
require('./server/routes/vote');
require('./server/routes/follow');
mongoose.connect(configDB.url);

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));               
app.use(bodyParser.text());                                    
app.use(bodyParser.json({ type: 'application/json'}));

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

// API 
var api = express.Router();
require('./server/routes/capture')(api);
require('./server/routes/comment')(api);
require('./server/routes/vote')(api);
require('./server/routes/follow')(api);
app.use('/api', api);

app.use(function(err, req, res, next) {
    res.status(err.status || 50, function(res) {
        res.render('error.html');
    });
});

// Port Settings
app.listen(process.env.PORT || 3000, process.env.IP);
console.log('Listening on port ' + process.env.PORT);

在我的客户端中,我有 2 个视图:我index.html的所有内容呈现在error.html哪里,如果人们收到 500 错误,我想将他们重定向到哪里。目前,如果人们访问一个不存在的链接,他们会被重定向到主页。

但是当我使用一个存在但参数不存在的 url 时,我得到 500(内部服务器错误)。

使用服务器端底部的代码,我认为这些错误会被重定向到 error.html 页面,但由于某种原因它不会。

在我的服务器日志上它没有给出任何错误,看到它应该被重定向,但在我的客户端,我只是用错误的参数加载页面(当然没有内容,除了空元素,什么也没找到)。

我该如何解决这个问题?

谢谢

4

1 回答 1

0

一种方法是简单地定义error路由,它看起来像:

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

/error然后,如果发生(任何)错误,即从您的服务器路由(*处理每个服务器路由中的错误)重定向到路由。

喜欢:

res.redirect('/error');

希望这可以帮助。

于 2016-06-02T22:09:42.470 回答