У меня возникли проблемы с выполнением обработки java в окнах из nodejs. Когда я использую следующие

processing-java --sketch=$pwd/sketch/ --run

В консоли он работает нормально, эскиз выполняется, открывается окно, и в результате получается файл, записанный в каталог, где он мне нужен.

Но когда я использую то же самое, что и строку в файле узла для его выполнения, оно не открывает окно, и файл не был записан, но выполняется функция обратного вызова processOutput, поэтому каким-то образом выполнение произошло.

Я добавил

const exec = require('child_process').exec;

В файл js, который используется для выполнения дочерних процессов в node. $ pwd - это PowerShell, эквивалентный pwd в MacOS. exec должен выполнить команду оболочки и вызвать функцию обратного вызова. Выполняется функция обратного вызова, но не скетч.

const cmd = 'processing-java --sketch=$pwd/sketch/ --run';
exec(cmd, processOutput);

Что мне не хватает? Любая помощь приветствуется. Большое спасибо, C.

1
Carsten H 25 Окт 2020 в 12:52

1 ответ

Лучший ответ

child_process.exec() выполняется не в PowerShell, а в терминале CMD. Таким образом, вы не можете использовать переменные PowerShell, такие как $pwd. Вместо этого вы можете попробовать использовать %CD%

const cmd = 'processing-java --sketch=%CD%/sketch/ --run';
exec(cmd, processOutput);
2
derpirscher 25 Окт 2020 в 10:00