mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-18 14:26:56 +00:00
77 lines
1.7 KiB
JavaScript
77 lines
1.7 KiB
JavaScript
'use strict';
|
|
/**
|
|
* error controller
|
|
*/
|
|
export default class extends think.controller.base {
|
|
/**
|
|
* display error page
|
|
* @param {Number} status []
|
|
* @return {Promise} []
|
|
*/
|
|
displayError(status){
|
|
|
|
//hide error message on production env
|
|
if(think.env === 'production'){
|
|
this.http.error = null;
|
|
}
|
|
|
|
let errorConfig = this.config('error');
|
|
let message = this.http.error && this.http.error.message || '';
|
|
if(this.isJsonp()){
|
|
return this.jsonp({
|
|
[errorConfig.key]: status,
|
|
[errorConfig.msg]: message
|
|
})
|
|
}else if(this.isAjax()){
|
|
return this.fail(status, message);
|
|
}
|
|
|
|
let module = 'common';
|
|
if(think.mode !== think.mode_module){
|
|
module = this.config('default_module');
|
|
}
|
|
let file = `${module}/error/${status}.html`;
|
|
let options = this.config('tpl');
|
|
options = think.extend({}, options, {type: 'base', file_depr: '_'});
|
|
this.fetch(file, {}, options).then(content => {
|
|
content = content.replace('ERROR_MESSAGE', message);
|
|
this.type(options.content_type);
|
|
this.end(content);
|
|
});
|
|
}
|
|
/**
|
|
* Bad Request
|
|
* @return {Promise} []
|
|
*/
|
|
_400Action(){
|
|
return this.displayError(400);
|
|
}
|
|
/**
|
|
* Forbidden
|
|
* @return {Promise} []
|
|
*/
|
|
_403Action(){
|
|
return this.displayError(403);
|
|
}
|
|
/**
|
|
* Not Found
|
|
* @return {Promise} []
|
|
*/
|
|
_404Action(){
|
|
return this.displayError(404);
|
|
}
|
|
/**
|
|
* Internal Server Error
|
|
* @return {Promise} []
|
|
*/
|
|
_500Action(){
|
|
return this.displayError(500);
|
|
}
|
|
/**
|
|
* Service Unavailable
|
|
* @return {Promise} []
|
|
*/
|
|
_503Action(){
|
|
return this.displayError(503);
|
|
}
|
|
} |