node.js child_process 生成时忽略等号

node.js child_process spawn ignoring equal signs

我正在尝试使用目标设备启动 cordova 命令。我已经测试了该命令并且它可以工作,但是当我尝试用我的代码生成它时,它会忽略等号,因此不会 运行。此代码确实有效,只是不添加 "--target='iPhone-7-Plus"

return new Promise((resolve, reject) => {
  const executable = "ionic";
  const arguments = [
    "cordova",
    buildOnly ? "build" : "run",
    platform,
    "--no-interactive",
    "--verbose",
    "--target='iPhone-7-Plus'"
  ].concat(releaseDev === "release" ? ["--prod", "--release"] : []);
  console.log(executable, arguments.join(" "));
  const child = spawn(executable, arguments, {
    stdio: "inherit"
  });
  child.on("close", () => resolve());
  child.on("error", err => reject(err));
});

我在这里做错了什么?为什么它只忽略我的等号,但命令的其余部分被添加?

如果我 运行 cordova run ios --target='iPhone-7-Plus' 命令将毫无问题地执行并启动 7+ 模拟器。

生成时我必须添加 shell: true 以便为我的 os 使用默认的 shell。 spawn 使用的 shell 会去除特殊字符。

const child = spawn(executable, arguments, {
  stdio: "inherit",
  shell: true
});