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
});
我正在尝试使用目标设备启动 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
});