diff --git a/src/pty/unixTerminal.ts b/src/pty/unixTerminal.ts index a5ab873f..3e89dadc 100644 --- a/src/pty/unixTerminal.ts +++ b/src/pty/unixTerminal.ts @@ -13,12 +13,13 @@ import { IProcessEnv, IPtyForkOptions, IPtyOpenOptions } from '@homebridge/node- import { ArgvOrCommandLine } from '@homebridge/node-pty-prebuilt-multiarch/src/types'; import { assign } from '@homebridge/node-pty-prebuilt-multiarch/src/utils'; import { pty_loader } from './prebuild-loader'; +import { fileURLToPath } from 'url'; export const pty = pty_loader(); let helperPath: string; helperPath = '../build/Release/spawn-helper'; - -helperPath = path.resolve(__dirname, helperPath); +const import__dirname = path.dirname(fileURLToPath(import.meta.url)); +helperPath = path.resolve(import__dirname, helperPath); helperPath = helperPath.replace('app.asar', 'app.asar.unpacked'); helperPath = helperPath.replace('node_modules.asar', 'node_modules.asar.unpacked'); diff --git a/src/pty/windowsPtyAgent.ts b/src/pty/windowsPtyAgent.ts index d6a2f71d..8b36780a 100644 --- a/src/pty/windowsPtyAgent.ts +++ b/src/pty/windowsPtyAgent.ts @@ -14,6 +14,8 @@ import { ArgvOrCommandLine } from '@homebridge/node-pty-prebuilt-multiarch/src/t import { fork } from 'child_process'; import { ConoutConnection } from './windowsConoutConnection'; import { require_dlopen } from '.'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; let conptyNative: IConptyNative; let winptyNative: IWinptyNative; @@ -149,7 +151,7 @@ export class WindowsPtyAgent { consoleProcessList.forEach((pid: number) => { try { process.kill(pid); - } catch{ + } catch { // Ignore if process cannot be found (kill ESRCH error) } }); @@ -176,8 +178,9 @@ export class WindowsPtyAgent { } private _getConsoleProcessList(): Promise { + const import__dirname = dirname(fileURLToPath(import.meta.url)); return new Promise(resolve => { - const agent = fork(path.join(__dirname, 'conpty_console_list_agent'), [this._innerPid.toString()]); + const agent = fork(path.join(import__dirname, 'conpty_console_list_agent'), [this._innerPid.toString()]); agent.on('message', message => { clearTimeout(timeout); // @ts-expect-error no need to check if it is null