diff --git a/src/common.ts b/src/common.ts index 62d957b3..d9380dd8 100644 --- a/src/common.ts +++ b/src/common.ts @@ -152,11 +152,10 @@ export async function validateElectronApp( } export async function hostInfo() { - const packageJsonPath = path.resolve(import.meta.dirname, '../package.json'); - - const { default: metadata } = await import(packageJsonPath, { - with: { type: 'json' }, - }); + const packageJSONPath = path.resolve(import.meta.dirname, '../package.json'); + const metadata = JSON.parse( + await fs.promises.readFile(packageJSONPath, 'utf8'), + ); return ( `Electron Packager ${metadata.version}\n` + diff --git a/src/packager.ts b/src/packager.ts index 4f7f47f5..d564426f 100644 --- a/src/packager.ts +++ b/src/packager.ts @@ -1,3 +1,6 @@ +import path from 'node:path'; +import url from 'node:url'; + import { baseTempDir, debug, @@ -12,7 +15,6 @@ import fs from 'graceful-fs'; import { promisifiedGracefulFs } from './util.js'; import { getMetadataFromPackageJSON } from './infer.js'; import { runHooks } from './hooks.js'; -import path from 'node:path'; import { createPlatformArchPairs, osModules, @@ -28,7 +30,6 @@ import type { Options, ProcessedOptions, } from './types.js'; -import { App } from './platform.js'; async function debugHostInfo() { debug(await hostInfo()); @@ -192,10 +193,16 @@ export class Packager { debug(`Creating ${buildDir}`); await fs.promises.mkdir(buildDir, { recursive: true }); await this.extractElectronZip(comboOpts, zipPath, buildDir); - const os = await import( - `${osModules[comboOpts.platform as OfficialPlatform]}.js` - ); - const app = new os.App(comboOpts, buildDir) as App; + const osPackagerPath = url + .pathToFileURL( + path.resolve( + import.meta.dirname, + `${osModules[comboOpts.platform]}.js`, + ), + ) + .toString(); + const osPackager = await import(osPackagerPath); + const app = new osPackager.App(comboOpts, buildDir); return app.create(); } diff --git a/test/infer.spec.ts b/test/infer.spec.ts index 1e1a5ff0..67114bb4 100644 --- a/test/infer.spec.ts +++ b/test/infer.spec.ts @@ -1,6 +1,7 @@ import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; +import url from 'node:url'; import { getMetadataFromPackageJSON } from '../src/infer.js'; import { Options } from '../src/types.js'; import semver from 'semver'; @@ -16,7 +17,9 @@ describe('getMetadataFromPackageJSON', () => { const opts: Options = { dir, }; - const packageJSON = await import(path.join(dir, 'package.json')); + const packageJSON = await import( + url.pathToFileURL(path.join(dir, 'package.json')).toString() + ); const result = await getMetadataFromPackageJSON([], opts, opts.dir); expect(result.electronVersion).toBeDefined(); expect(