egg/lib/application.js
Haoliang Gao 350d0f5aaf feat: [BREAKING_CHANGE] use egg-core (#44)
* feat: [BREAKING_CHANGE] use egg-core

* fix: miss app and config to publish

* deps: upgrade egg-rest

* deps: update using autod

* test: use supertest@2

* Release 0.1.0-beta.3

* feat: enable logrotater by default

* chore: add circleci

* refactor: rename logrotater => logrotator

* feat: remove log-reload event

* test: let examples pass test

* fix: remove more close event

* refactor: extract Symbol as a constant

* deps: upgrade egg-core

* Release 0.1.0-beta.4

* fix: use egg when customEgg is not specified
2016-08-18 15:42:20 +08:00

57 lines
1.3 KiB
JavaScript

/**
* 对 koa application 的所有扩展,都放在此文件统一维护。
*
* - koa application: https://github.com/koajs/koa/blob/master/lib/application.js
*/
'use strict';
const path = require('path');
const graceful = require('graceful');
const EggApplication = require('./egg');
const AppWorkerLoader = require('./loader').AppWorkerLoader;
const EGG_LOADER = Symbol.for('egg#loader');
const EGG_PATH = Symbol.for('egg#eggPath');
/**
* Application 对象,由 AppWorker 实例化,和 {@link Agent} 共用继承 {@link EggApplication} 的 API
* @extends EggApplication
*/
class Application extends EggApplication {
/**
* @constructor
* @param {Object} options - 同 {@link EggApplication}
*/
constructor(options) {
options = options || {};
options.type = 'application';
super(options);
this.loader.load();
this.on('server', server => this.onServer(server));
}
get [EGG_LOADER]() {
return AppWorkerLoader;
}
get [EGG_PATH]() {
return path.join(__dirname, '..');
}
onServer(server) {
graceful({
server: [ server ],
error: (err, throwErrorCount) => {
if (err.message) {
err.message += ' (uncaughtException throw ' + throwErrorCount + ' times on pid:' + process.pid + ')';
}
this.coreLogger.error(err);
},
});
}
}
module.exports = Application;