Authored by xuqi
... ... @@ -24,31 +24,34 @@ app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', require('./router'));
app.use(function(req, res) {
var err = new Error('Not Found');
err.status = 404;
res.send(404, err);
app.use(function(req, res, next) {
res.locals.isDevelop = app.get('env') === 'development';
next();
});
if (app.get('env') === 'development') {
app.use(function(err, req, res) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// 加载路由
app.use('/', require('./router'));
// 未知路由转入 404
// app.use(function(req, res) {
// var err = new Error('Not Found');
//
// err.status = 404;
// res.send(404, err);
// });
// 捕获全局错误, 非开发环境不返回错误详情
app.use(function(err, req, res) {
if (app.get('env') !== 'development') {
console.log(err);
err = {};
}
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
error: err
});
});
module.exports = app;
... ...
... ... @@ -6,6 +6,7 @@
'use strict';
var rp = require('request-promise');
var errUtil = require('../util/error');
const API_URL = 'http://testapi.yoho.cn:28078';
... ... @@ -20,12 +21,6 @@ class API {
'User-Agent': 'YOHO WEB NODE' // TODO: 请求的服务端是否有要求格式,是否添加
};
this.timeout = 5000;
this.catchError = function(err) {
// TODO: 完善 API 调用错误日志记录
console.log('接口调用失败', err);
return Promise.reject(err);
};
}
get(url, data) {
... ... @@ -34,7 +29,7 @@ class API {
headers: this.headers,
timeout: this.timeout,
qs: data
}).catch(this.catchError);
}).catch(errUtil.apiError);
}
post(url, data) {
... ... @@ -44,7 +39,7 @@ class API {
headers: this.headers,
timeout: this.timeout,
form: data // TODO: post 请求格式不知后端要求 json 还是 form 提交,需要后续完善
}).catch(this.catchError);
}).catch(errUtil.apiError);
}
}
... ...
... ... @@ -15,7 +15,7 @@ var named = require('vinyl-named');
var cp = require('child_process');
var fs = require('fs');
var config = JSON.parse(fs.readFileSync('./package.json').toString());
var config = require('./package');
var root = `dist/${config.name}/`;
var distDir = {
... ... @@ -157,4 +157,4 @@ gulp.task('server', () => {
console.log(`exec error: ${err}`);
}
});
});
\ No newline at end of file
});
... ...
// 收集 API 错误
exports.apiError = (err) => {
// TODO: 完善 API 调用错误日志格式
console.log('接口调用失败', err);
return Promise.reject(err);
};
// 控制返回到页面的错误信息
exports.webError = (err, res) => {
console.log(err);
// 单独放在组件
// 容错处理,根据环境不同,决定是否返回到前端
res.sendStatus(500);
if (res.locals.isDevelop) {
console.log(err);
err = {};
}
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
};
... ...
# 默认错误页面
... ...