From 8e0f150fab7868ff69c7b314730cdec6407ac2aa Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Tue, 11 Jun 2024 13:57:03 -0400 Subject: [PATCH] Fix ESM-interop issue --- packages/backend/src/Kernel.js | 7 +++++-- packages/backend/src/boot/RuntimeEnvironment.js | 11 +++++++---- run-selfhosted.js | 4 +++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/backend/src/Kernel.js b/packages/backend/src/Kernel.js index 362c52435..730d45a5a 100644 --- a/packages/backend/src/Kernel.js +++ b/packages/backend/src/Kernel.js @@ -22,7 +22,7 @@ const BaseService = require("./services/BaseService"); const useapi = require('useapi'); class Kernel extends AdvancedBase { - constructor () { + constructor ({ entry_path } = {}) { super(); this.modules = []; @@ -32,13 +32,15 @@ class Kernel extends AdvancedBase { def('Module', AdvancedBase); def('Service', BaseService); }); + + this.entry_path = entry_path; } add_module (module) { this.modules.push(module); } - _runtime_init () { + _runtime_init (boot_parameters) { const kvjs = require('@heyputer/kv.js'); const kv = new kvjs(); global.kv = kv; @@ -54,6 +56,7 @@ class Kernel extends AdvancedBase { // Determine config and runtime locations const runtimeEnv = new RuntimeEnvironment({ + entry_path: this.entry_path, logger: bootLogger, }); const environment = runtimeEnv.init(); diff --git a/packages/backend/src/boot/RuntimeEnvironment.js b/packages/backend/src/boot/RuntimeEnvironment.js index 4fbf07a4e..70d263fd6 100644 --- a/packages/backend/src/boot/RuntimeEnvironment.js +++ b/packages/backend/src/boot/RuntimeEnvironment.js @@ -163,7 +163,7 @@ const runtime_paths = ({ path_checks }) => ({ path_ }) => [ ]; // Suitable mod paths in order of precedence. -const mod_paths = ({ path_checks }) => ({ path_ }) => [ +const mod_paths = ({ path_checks, entry_path }) => ({ path_ }) => [ { label: '$MOD_PATH', get path () { return process.env.MOD_PATH }, @@ -180,7 +180,8 @@ const mod_paths = ({ path_checks }) => ({ path_ }) => [ }, { get path () { - return path_.join(path_.dirname(require.main.filename), '../mods'); + return path_.join(path_.dirname( + entry_path || require.main.filename), '../mods'); }, checks: [ path_checks.skip_if_not_exists ], }, @@ -194,9 +195,10 @@ class RuntimeEnvironment extends AdvancedBase { format: require('string-template'), } - constructor ({ logger }) { + constructor ({ logger, entry_path }) { super(); this.logger = logger; + this.entry_path = entry_path; this.path_checks = path_checks(this)(this.modules); this.config_paths = config_paths(this)(this.modules); this.runtime_paths = runtime_paths(this)(this.modules); @@ -218,7 +220,8 @@ class RuntimeEnvironment extends AdvancedBase { // with some helpful values. A partial-population of this object later // in this function will be used when evaluating configured paths. const environment = {}; - environment.source = this.modules.path_.dirname(require.main.filename); + environment.source = this.modules.path_.dirname( + this.entry_path || require.main.filename); const config_path_entry = this.get_first_suitable_path_( { pathFor: 'configuration' }, diff --git a/run-selfhosted.js b/run-selfhosted.js index 128936225..070c35acc 100644 --- a/run-selfhosted.js +++ b/run-selfhosted.js @@ -62,7 +62,9 @@ const main = async () => { } = (await import('@heyputer/backend')).default; console.log('kerne', Kernel); - const k = new Kernel(); + const k = new Kernel({ + entry_path: import.meta.filename + }); k.add_module(new CoreModule()); k.add_module(new DatabaseModule()); k.add_module(new LocalDiskStorageModule());