nodejs запускает exe неправильно
Запускаю exe на Windows 10 через nodejs spawn:
let child = spawn(getExeDir(), {stdio: ['pipe', 'pipe', 'pipe'] });
При этом функционал программы, связанный со сторонними библиотеками, работает неправильно. Но, если:
- Запустить программу обычным двойным кликом через проводник и закрыть
- Запустить из nodejs То программа начинает работать корректно. Вопрос: что нужно сделать, чтобы nodejs запускал exe корректно? Версия nodejs: v14.17.0
Ответы (1 шт):
После долгих изысканий выяснилось, что при запуске от имени 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