Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
protected loadApplicationContext(): void {
// this.app.options.container 测试用例编写方便点
const containerConfig = this.config.container || this.app.options.container || {};
if (!containerConfig.loadDir) {
// 如果没有配置,默认就把扫描目录改到 /src or /dist
containerConfig.baseDir = this.baseDir;
}
// 在 super constructor 中会调用到getAppInfo,之后会被赋值
// 如果是typescript会加上 dist 或者 src 目录
this.containerLoader = new ContainerLoader({
baseDir: this.appDir,
isTsMode: this.isTsMode
});
this.containerLoader.initialize();
this.applicationContext.registerObject('appDir', this.appDir);
// 如果没有关闭autoLoad 则进行load
this.containerLoader.loadDirectory(containerConfig);
// register handler for container
this.containerLoader.registerHook(MidwayHandlerKey.CONFIG, (key: string) => {
return safelyGet(key, this.config);
});
this.containerLoader.registerHook(MidwayHandlerKey.PLUGIN, (key: string) => {
return this.app[key] || this.pluginContext.get(key);
});
constructor(
options: {
baseDir?: string;
config?: object;
typescript?: boolean;
preloadModules?: any[];
logger?: any;
} = {}
) {
this.appDir = options.baseDir || process.cwd();
this.globalConfig = options.config || {};
this.logger = options.logger || console;
this.isTsMode = this.getTsMode(options.typescript);
this.baseDir = this.getBaseDir();
this.loader = new ContainerLoader({
baseDir: this.baseDir,
isTsMode: this.isTsMode,
preloadModules: options.preloadModules || [],
});
this.loader.initialize();
}