Невозможно передать аргументы в файл JavaScript с помощью config.yaml в API событий OctoPrint - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь передать параметры в файл JavaScript, который будет выполнен с использованием NodeJS.

Файл JavaScript содержит следующую функцию:

function handleEvent() {

    var options = { method: 'POST',
        url: 'http://'+LOCAL_PC_ADDRESS+'/events/job/started',
        qs:
            { filename: 'example/file.gcode',
                testArguments: process.argv },
        headers:
            {
                'cache-control': 'no-cache' } };

    request(options, function (error, response, body) {
        if (error) throw new Error(error);

        console.log(body);
    });
}

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

Если я запускаю:

node myscript.js "foo" "bar"

В возвращенный POST я получаю то, что ожидаю:

{ filename: 'example/file.gcode',
  testArguments:
   [ '/usr/bin/node',
     '/home/pi/prototype-rasp/myfile.js',
     'foo',
     'bar'
] }

И до сих порвсе в порядке.

Проблемы возникают, когда я использую перехватчики событий API OctoPrint , я настраиваю события в config.yaml , как показано вдокументы.Часть этого config.yaml сообщается здесь:

events:
  enabled: True
  subscriptions:
    - event: Connected
      command: /usr/bin/node /home/pi/prototype-rasp/myscript.js "foo" "bar"
      type: system
      enabled: true

Я также пытался использовать command: /usr/bin/node /home/pi/prototype-rasp/myscript.js -- "bar" "foo".Я запускаю событие OctoPrint, которое правильно обнаружило ловушку события yaml, запускает сценарий, но в process.argv отсутствуют аргументы, отсутствуют foo и bar .

Anyидея как это решить?

...