【问题标题】:How to present node spawn arguments如何呈现节点生成参数
【发布时间】:2020-10-08 00:34:49
【问题描述】:

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

其中的第一个基本上是不同用例中的相同问题,因此答案没有解决我的用例。

那么...如何使用空格分隔命名参数的命令行如下编码?

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", 
  [
    "compile", 
    "--fqbn", 
    "arduino:avr:nano"
  ]
);

还是这个(3)?

let cp = child.process(
  "/path/to/arduino-cli.exe", 
  [
    "compile", 
    "fqbn", 
    "arduino:avr:nano"
  ]
);

还是这个(4)?

let cp = child.process(
  "/path/to/arduino-cli.exe", 
  {
    _: ["compile"],
    fqbn: "arduino:avr:nano"
  }
);

TypeScript 不允许最后一个选项,即使我怀疑它是正确的答案,所以我提交这个问题以供更广泛的考虑。

【问题讨论】:

  • 第二个对我来说很合适。参数应该是一个字符串数组,每个数组元素一个参数,所以第三个是错误的格式(这就是 TypeScript 不允许它的原因)。第一个在一个数组元素中有多个参数。
  • 问题是,它是一个命名参数。而且,它们都不起作用。我现在正在重做测试,以防我搞砸了。
  • 制作一个小测试应用程序,它只记录它传递的参数,然后在生成该测试应用程序时尝试不同的方法来传递参数。
  • 另外,你在什么操作系统上运行这个?
  • @jfriend00 什么操作系统?在开发期间,Win10.但是,它旨在跨平台。你的问题是不祥的。告诉我坏消息。

标签: node.js spawn


【解决方案1】:

设置可重复测试后

    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。​​p>

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

这里的关键洞察是捕获错误事件stderr。在 stderr 上报告了失败,并且没有引发错误事件。曝光stderr后问题很快得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多