如何在“spawn”中运行没有参数的命令
Posted
技术标签:
【中文标题】如何在“spawn”中运行没有参数的命令【英文标题】:How to run a command with no args in 'spawn' 【发布时间】:2020-01-24 20:41:19 【问题描述】:您好,我正在尝试从 NodeJS 运行终端命令并尝试使用 spawn 命令,我一直在使用 exec 但现在正在尝试 spawn 用于标准输出。
我读过的所有例子,比如这个: Exec : display stdout "live"
使用带有多个参数的命令,就像上面的示例一样,它们使用 spawn 运行的命令是:
var spawn = require('child_process').spawn, ls = spawn('ls', ['-lh', '/usr']);
这是'$ ls -lh /usr'
我试图只运行不带参数的命令“pwd”,但我一直尝试这样做的所有方式(如下所示)都导致了一个“错误”
var spawn = require('child_process').spawn, ls = spawn('pwd');
或
var spawn = require('child_process').spawn, ls = spawn('pwd', []);
stderr: usage: pwd [-L | -P]
【问题讨论】:
【参考方案1】:在spawn
中提供参数不是强制性的。在您的问题中,spawn
正在工作,这就是为什么您看到的错误实际上是在执行spawn('pwd')
之后stderr
的输出。
pwd
与 spawn
的工作示例:
var spawn = require('child_process').spawn;
const pwd = spawn('pwd');
pwd.stdout.on('data', (data) =>
console.log(`stdout: $data`);
);
pwd.stderr.on('data', (data) =>
console.error(`stderr: $data`);
);
pwd.on('close', (code) =>
console.log(`child process exited with code $code`);
);
演示:https://repl.it/repls/AlienatedTidyDatalogs
【讨论】:
以上是关于如何在“spawn”中运行没有参数的命令的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Nodejs 和 spawn 在 Windows 10 上以管理员身份运行一些 CMD 命令?
如何将字符串解析为 child_process.spawn 的适当参数?
如何使用 nodejs child_process.spawn 捕获 ENOENT?