Я пытаюсь передать параметры в файл 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идея как это решить?