hexo/node_modules/sdk-base/index.js

59 lines
1.3 KiB
JavaScript

/**
* Copyright(c) dead_horse and other contributors.
* MIT Licensed
*
* Authors:
* dead_horse <dead_horse@qq.com>
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)
*/
'use strict';
/**
* Module dependencies.
*/
var ready = require('get-ready');
var EventEmitter = require('events').EventEmitter;
var util = require('util');
module.exports = Base;
function Base() {
EventEmitter.call(this);
this.on('error', this.defaultErrorHandler.bind(this));
}
/**
* inherits from EventEmitter
*/
util.inherits(Base, EventEmitter);
ready.mixin(Base.prototype);
Base.prototype.defaultErrorHandler = function (err) {
if (this.listeners('error').length > 1) {
// ignore defaultErrorHandler
return;
}
console.error('\n[%s][pid: %s][%s][%s] %s: %s \nError Stack:\n %s',
Date(), process.pid, this.constructor.name, __filename, err.name,
err.message, err.stack);
// try to show addition property on the error object
// e.g.: `err.data = {url: '/foo'};`
var additions = [];
for (var key in err) {
if (key === 'name' || key === 'message') {
continue;
}
additions.push(util.format(' %s: %j', key, err[key]));
}
if (additions.length) {
console.error('Error Additions:\n%s', additions.join('\n'));
}
console.error();
};