Node JS,执行Spawn命令时询问权限

Node JS, ask permission when executing Spawn command

我有一些用 nodejs 编写的脚本,它使用 spawn 来执行一些 cmd 命令:

let cmd = spawn("command name", ["my", "arguments"], {cwd: 'pth where it will be executed'});

cmd.stdOut.on('data', (data) => {/*Handle some output*/})

有时我需要执行的代码会请求权限(有些用户可能有密码)。

如何请求权限然后继续执行这条命令?我知道以管理员或超级用户身份启动代码会很简单,但并非所有用户都会这样做。

生成进程时可以传递 {stdio: 'inherit'}。 然后子进程将使用父进程的 stdin、stdout 和 stderr,这意味着如果子进程需要 sudo 权限,您将看到来自子进程的 'Password:' 之类的消息,您将能够输入它。

我只是这样测试的:

const {spawn} = require('child_process');

let cmd = spawn('sudo', ['ls'], {stdio: 'inherit'});
//Also works like this
let cmd = spawn('./requires-sudo.sh', {stdio: 'inherit'});

请注意,您不再需要收听 'data' 事件,因为父级和子级的标准输出相同,因此您会看到输出。