目前这就是我的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页面,但由于某些原因它并没有。
在我的服务器日志中它没有错误,看到它应该重定向,但在我的客户端,我只是用错误的参数加载页面(并且当然没有内容,除了空元素,看不到任何内容)
我该如何解决这个问题?
由于
答案 0 :(得分:0)
一种方法是简单地定义// Error route
app.get('/error', function(req, res){
res.render('error.html');
});
路线,它看起来像:
/error
然后,如果(任何)错误发生,则重定向到res.redirect('/error');
路由,即从您的服务器路由(*处理每个服务器路由中的错误)。
像:
public List<VatRate> GetAll( string cnString )
{
List<VatRate> result = new List<VatRate>();
using (SqlConnection cn = new SqlConnection(cnString))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = SQL_SELECT;
cmd.CommandType = System.Data.CommandType.Text;
cn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
VatRate vr = new VatRate();
vr.IDVatRate = reader["IDVatRate"] == System.DBNull.Value ? Guid.Empty : (Guid)reader["IDVatRate"];
vr.Percent = reader["Percent"].XxNullDecimal();
vr.Type = reader["Type"].XxNullString();
vr.VatRateDescription = reader["VatRateDescription"].XxNullString();
}
}
reader.Close();
cn.Close();
}
return result;
}
希望这有帮助。