如何解决如何显示节点生成参数
在人们开始哭泣“重复”之前,我已经检查过了
- Spawning process with arguments in node.js
- Use NodeJS spawn to call node script with arguments
- How do I pass command line arguments to a Node.js program?
在不同的用例中,第一个基本上是相同的问题,结果答案无法解决我的用例。
那么...您如何用命名参数和它们的值之间用空格分隔的如下代码来编码命令行?
arduino-cli compile --fqbn arduino:avr:nano
看起来像这样(1)?
let cp = child.process(
"/path/to/arduino-cli.exe",[
"compile","--fqbn arduino:avr:nano"
]
);
还是这个(2)?
let cp = child.process(
"/path/to/arduino-cli.exe","--fqbn","arduino:avr:nano"
]
);
还是这个(3)?
let cp = child.process(
"/path/to/arduino-cli.exe","fqbn","arduino:avr:nano"
]
);
还是这个(4)?
let cp = child.process(
"/path/to/arduino-cli.exe",{
_: ["compile"],fqbn: "arduino:avr:nano"
}
);
TypeScript不允许最后一个选项,即使我怀疑这是正确的答案,所以我将问题提交给更广泛的考虑。
解决方法
设置可重复测试后
let args: any[] = [];
args.push(["compile",`--fqbn ${selectedBoard.board.fqbn}`]);
args.push(["compile","--fqbn",selectedBoard.board.fqbn]);
args.push(["compile","fqbn",selectedBoard.board.fqbn]);
args.push({ _: ["compile"],fqbn: selectedBoard.board.fqbn });
let cp = child_process.spawn(cliPath,args[1],{ cwd: getInoPath() });
cp.stdout.on("data",(data: any) => outputChannel.append(data.toString()));
cp.stderr.on("data",(data: any) => outputChannel.append(data.toString()));
cp.on("error",(err: any) => {
outputChannel.append(err);
});
我发现@ jfriend00是正确的,确实是第二个参数版本
["compile",selectedBoard.board.fqbn]
但是还有另一个导致它失败的问题–需要在选项中设置CWD。 p>
let cp = child_process.spawn(cliPath,{ cwd: getInoPath() });
这里的关键见解是捕获错误事件和 stderr
。在stderr上报告了失败,并且未引发任何错误事件。暴露了stderr
之后,问题很快得到解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。