1

我正在尝试将参数传递给将使用 NodeJS 执行的 JavaScript 文件。

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'
] }

直到现在一切都还好。

当我使用OctoPrint API 事件挂钩时出现问题,我将事件配置到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". 我触发了正确找到 yaml 事件钩子的 OctoPrint 事件,启动了脚本,但在 中没有参数process.argv,缺少foobar

知道如何解决吗?

4

0 回答 0