我正在尝试将参数传递给将使用 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
,缺少foo和bar。
知道如何解决吗?