mirror of
https://github.com/eggjs/egg.git
synced 2024-12-04 07:14:30 +00:00
* 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
57 lines
1.3 KiB
JavaScript
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;
|