Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何显示节点生成参数_Node.js_Spawn - Fatal编程技术网

Node.js 如何显示节点生成参数

Node.js 如何显示节点生成参数,node.js,spawn,Node.js,Spawn,在人们开始喊“复制品”之前,我已经检查过了 第一个问题基本上是不同用例中的同一个问题,因此答案不针对我的用例 所以。。。如何使用命名参数对如下命令行进行编码,命名参数与它们的值之间用空格分隔 arduino-cli compile --fqbn arduino:avr:nano 它应该是这样的吗 还是这个(2) 还是这个(3) 还是这个(4) TypeScript不允许最后一个选项,尽管我怀疑它是正确的答案,所以我将问题提交给更广泛的考虑。设置可重复测试后 let args:

在人们开始喊“复制品”之前,我已经检查过了

第一个问题基本上是不同用例中的同一个问题,因此答案不针对我的用例

所以。。。如何使用命名参数对如下命令行进行编码,命名参数与它们的值之间用空格分隔

arduino-cli compile --fqbn arduino:avr:nano
它应该是这样的吗

还是这个(2)

还是这个(3)

还是这个(4)


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", "--fqbn", selectedBoard.board.fqbn]
但还有另一个问题导致它失败——需要在选项中设置CWD

let cp = child_process.spawn(cliPath, args[1], { cwd: getInoPath() });

这里的关键细节是捕获错误事件和
stderr
。在stderr上报告了故障,未引发错误事件。在暴露
stderr
后,问题很快得到解决。

第二个问题在我看来是正确的。参数应该是一个字符串数组,每个数组元素一个参数,所以第三个参数的格式错误(这就是为什么TypeScript不允许它)。第一个参数在一个数组元素中有多个参数。问题是,它是一个命名参数。而且,它们都不起作用。我现在正在重做测试,以防我搞砸了。制作一个小测试应用程序,只记录它传递的参数,然后在生成该测试应用程序时尝试不同的传递参数的方法。另外,你在什么操作系统上运行它?@jfriend00什么操作系统?在开发过程中,Win10。然而,它的目的是跨平台。你的问题是不祥的。告诉我这个坏消息。
let cp = child.process(
  "/path/to/arduino-cli.exe", 
  {
    _: ["compile"],
    fqbn: "arduino:avr:nano"
  }
);
    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);
    });
["compile", "--fqbn", selectedBoard.board.fqbn]
let cp = child_process.spawn(cliPath, args[1], { cwd: getInoPath() });