From b88807bf9d771e2fa54e54b79e8922e8dc15d50a Mon Sep 17 00:00:00 2001 From: JerrysShan <1670303003@qq.com> Date: Wed, 20 Dec 2023 17:23:27 +0800 Subject: [PATCH] fix: add file extension --- src/configuration/index.ts | 2 +- src/loader/impl/config.ts | 2 +- src/loader/impl/lifecycle.ts | 2 +- src/loader/impl/module.ts | 2 +- src/utils/compatible_require.ts | 7 ++++++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/configuration/index.ts b/src/configuration/index.ts index 7f89bb29..eb04a8cf 100644 --- a/src/configuration/index.ts +++ b/src/configuration/index.ts @@ -44,7 +44,7 @@ export default class ConfigurationHandler { } async setConfigByFile(fileItem: ManifestItem) { - const configContent: ConfigObject = await compatibleRequire(fileItem.path); + const configContent: ConfigObject = await compatibleRequire(fileItem.path + fileItem.extname); if (configContent) { const env = ConfigurationHandler.getEnvFromFilename(fileItem.filename); this.setConfig(env, configContent); diff --git a/src/loader/impl/config.ts b/src/loader/impl/config.ts index b0c1575c..ae3560fa 100644 --- a/src/loader/impl/config.ts +++ b/src/loader/impl/config.ts @@ -56,7 +56,7 @@ class ConfigLoader implements Loader { } protected async loadConfigFile(item: ManifestItem): Promise> { - const originConfigObj = await compatibleRequire(item.path); + const originConfigObj = await compatibleRequire(item.path + item.extname); let configObj = originConfigObj; if (typeof originConfigObj === 'function') { const app = this.container.get(ArtusInjectEnum.Application); diff --git a/src/loader/impl/lifecycle.ts b/src/loader/impl/lifecycle.ts index 128110da..2cc27cff 100644 --- a/src/loader/impl/lifecycle.ts +++ b/src/loader/impl/lifecycle.ts @@ -18,7 +18,7 @@ class LifecycleLoader implements Loader { } async load(item: ManifestItem) { - const origin: Constructable[] = await compatibleRequire(item.path, true); + const origin: Constructable[] = await compatibleRequire(item.path + item.extname, true); item.loaderState = Object.assign({ exportNames: ['default'] }, item.loaderState); const { loaderState: state } = item as { loaderState: { exportNames: string[] } }; diff --git a/src/loader/impl/module.ts b/src/loader/impl/module.ts index 860ce551..8efcbb0b 100644 --- a/src/loader/impl/module.ts +++ b/src/loader/impl/module.ts @@ -13,7 +13,7 @@ class ModuleLoader implements Loader { } async load(item: ManifestItem): Promise { - const origin = await compatibleRequire(item.path, true); + const origin = await compatibleRequire(item.path + item.extname, true); item.loaderState = Object.assign({ exportNames: ['default'] }, item.loaderState); const { loaderState: state } = item as { loaderState: { exportNames: string[] } }; diff --git a/src/utils/compatible_require.ts b/src/utils/compatible_require.ts index 87960f39..596ff035 100644 --- a/src/utils/compatible_require.ts +++ b/src/utils/compatible_require.ts @@ -5,9 +5,14 @@ import assert from 'assert'; * @param path */ export default async function compatibleRequire(path: string, origin = false): Promise { - const requiredModule = await import(path); + if (path.endsWith('.json')) { + return require(path); + } + let requiredModule = await import(path); assert(requiredModule, `module '${path}' exports is undefined`); + requiredModule = requiredModule.__esModule ? requiredModule.default ?? requiredModule : requiredModule; + return origin ? requiredModule : (requiredModule.default || requiredModule); } \ No newline at end of file