【问题标题】:Nodejs child_process spawn option arguments with dashes("--")带有破折号的Nodejs child_process spawn选项参数(“--”)
【发布时间】:2021-10-20 14:37:05
【问题描述】:

我正在尝试使用包含“--”的参数运行 child_process spawn,但它似乎没有注册它是有原因的。

我试图生成的命令是: wp-env run tests-cli "wp plugin update --all"

(这是一个运行wordpress环境的cli包-https://www.npmjs.com/package/@wordpress/env)

这里的双引号对于命令正常工作很重要,所以我认为这可能是问题的一部分。

这是我尝试使用的代码的总体思路:

const { spawn } = require("child_process");
 
const child = spawn('npx', [
    "wp-env",
    "run",
    "tests-cli",
    "wp",
    "plugin",
    "update",
    "--all"
], {shell: true});
 
var scriptOutput = "";
 
child.stdout.setEncoding('utf8');
 
child.stdout.on('data', function(data) {
    console.log('stdout: ' + data);
    data=data.toString();
    scriptOutput+=data;
});
 
child.stderr.setEncoding('utf8');
child.stderr.on('data', function(data) {
    console.log('stderr: ' + data);
    data=data.toString();
    scriptOutput+=data;
});
 
child.on('close', function(code) {
    console.log('closing code: ' + code);
    console.log('Full output of script: ',scriptOutput);
});

这是我得到的输出:

Starting 'wp plugin update' on the tests-cli container. 

我尝试了很多其他类似的组合,但遗憾的是它们都不适合我。

在谷歌上找不到任何线索,所以希望这里有人能够提供帮助。我认为根本原因实际上并没有与这个包特别相关,但我实际上并没有遇到使用“--”作为一般参数的问题,所以我认为它与这种组合以及对双引号的要求有关.

例如:

const child = spawn('npx', [
    "--version"
], {shell: true});

这样就可以了。

【问题讨论】:

  • 还有什么建议吗?

标签: node.js child-process spawn npx


【解决方案1】:

你正在做的实际上是在运行:

wp-env run tests-cli wp plugin update --all

注意:没有引号。

如果你想要wp-env run tests-cli "wp plugin update --all",那么你需要这样做:

const child = spawn('npx', [
    "wp-env",
    "run",
    "tests-cli",
    "wp plugin update --all"
], {shell: true});

这就是 bash 中引号的作用:它将其中的所有内容都视为一个参数。

【讨论】:

  • 已经尝试过了,但这不起作用,仍然输出与我上面显示的相同的输出,例如 - “在 tests-cli 容器上启动 'wp 插件更新'。”没有“--all”。
  • 你试过在命令行中运行npx wp-env run tests-cli "wp plugin update --all"吗?它给你什么输出?
  • 是的,它在 tests-cli 容器上输出“正在启动 'wp 插件更新 --all'。
  • 你是如何运行你的脚本的?直接点赞./script.js 或通过npm 点赞npm run script?
  • 直接如'node file.js'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 2012-10-01
  • 2019-06-05
  • 2016-06-07
  • 2020-07-07
  • 1970-01-01
相关资源
最近更新 更多