nodejs запускает exe неправильно

Запускаю exe на Windows 10 через nodejs spawn:

let child = spawn(getExeDir(), {stdio: ['pipe', 'pipe', 'pipe'] });

При этом функционал программы, связанный со сторонними библиотеками, работает неправильно. Но, если:

  1. Запустить программу обычным двойным кликом через проводник и закрыть
  2. Запустить из nodejs То программа начинает работать корректно. Вопрос: что нужно сделать, чтобы nodejs запускал exe корректно? Версия nodejs: v14.17.0

Ответы (1 шт):

Автор решения: TheCoolKuid

После долгих изысканий выяснилось, что при запуске от имени NodeJS рабочая директория процесса устанавливается как рабочая директория NodeJS. То есть:
-NodeJS работает в папке C:\NodeJS
-Ваш exe лежит в папке C:\NodeJS\bin
Тогда, при запуске методом как в вопросе, cwd (Рабочая директория процесса) будет установлен как C:\NodeJS => если ваша программа загружает какие-либо библиотеки, то они само собой будут отсутствовать, следовательно, функционал работать не будет. Правильным способом запуска будет:

this.child = spawn("cmd", ["/C", this._process.processPath], { 
                stdio: ['pipe', 'pipe', 'pipe'],
                cwd: path.dirname(this._process.processPath) });

т.е. явно указываем cwd как папку с exe.
path - стандартная библиотека NodeJS

→ Ссылка