Spawn команда не работает в электронном приложении - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь запустить команду, используя spawn, используя AngularJS в Electron, я получаю ошибку.

events.js:183 Uncaught Error: spawn dita ENOENT
    at _errnoException (util.js:1024)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:190)
    at onErrorNT (internal/child_process.js:372)
    at _combinedTickCallback (internal/process/next_tick.js:138)
    at process._tickCallback (internal/process/next_tick.js:180)
_errnoException @ util.js:1024
ChildProcess._handle.onexit @ internal/child_process.js:190
onErrorNT @ internal/child_process.js:372
_combinedTickCallback @ internal/process/next_tick.js:138
_tickCallback @ internal/process/next_tick.js:180

Это моя команда порождения : -

spawn('dita', 
            ['--input=C:\Users\aaa\Desktop\ditamaps\mobile-phone\mobilePhone.ditamap', '--output=C:\Users\aaa\Desktop', '--format=pdf'],
            {
              cwd: $scope.ditaPath + "\\bin"
            }, function(error, stdout, stderr) {
              // work with result
              console.log(stdout);
              console.log(stderr);
              console.log(error);
            });

Когда я запускаю тот же пакетный код вручную, он работает нормально.Что это за ошибка?Я не могу получить это.

1 Ответ

0 голосов
/ 27 сентября 2018

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

spawn('/full/path/to/dita',
    ['--input=C:\Users\aaa\Desktop\ditamaps\mobile-phone\mobilePhone.ditamap', '--output=C:\Users\aaa\Desktop', '--format=pdf'],
    {
        cwd: $scope.ditaPath + "\\bin"
    }, function (error, stdout, stderr) {
        // work with result
        console.log(stdout);
        console.log(stderr);
        console.log(error);
    }
);

или если вы хотите эмулировать командную строку

spawn('cmd.exe',
    ['dita', '--input=C:\Users\aaa\Desktop\ditamaps\mobile-phone\mobilePhone.ditamap', '--output=C:\Users\aaa\Desktop', '--format=pdf'],
    {
        cwd: $scope.ditaPath + "\\bin"
    }, function (error, stdout, stderr) {
        // work with result
        console.log(stdout);
        console.log(stderr);
        console.log(error);
    }
);

оба решения должны работать, но в вашем сценарии, я думаю, второе может быть легко реализовано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...