我正在将一个CLI库从Ruby移植到Node.js。在我的代码中,必要时我会执行几个第三方二进制文件。我不确定如何在Node中实现这一点。
下面是Ruby中的一个示例,我调用PrinceXML将文件转换为PDF:
cmd = system("prince -v builds/pdf/book.html -o builds/pdf/book.pdf")
Node中的等效代码是什么?
我正在将一个CLI库从Ruby移植到Node.js。在我的代码中,必要时我会执行几个第三方二进制文件。我不确定如何在Node中实现这一点。
下面是Ruby中的一个示例,我调用PrinceXML将文件转换为PDF:
cmd = system("prince -v builds/pdf/book.html -o builds/pdf/book.pdf")
Node中的等效代码是什么?
当前回答
const exec = require("child_process").exec
exec("ls", (error, stdout, stderr) => {
//do whatever here
})
其他回答
如果你想要一个与顶级答案非常相似但同时也是同步的答案,那么这将起作用。
var execSync = require('child_process').execSync;
var cmd = "echo 'hello world'";
var options = {
encoding: 'utf8'
};
console.log(execSync(cmd, options));
const exec = require("child_process").exec
exec("ls", (error, stdout, stderr) => {
//do whatever here
})
使用这个轻量级npm包:系统命令
看看这里。
按如下方式导入:
const system = require('system-commands')
运行以下命令:
system('ls').then(output => {
console.log(output)
}).catch(error => {
console.error(error)
})
由于版本4,最接近的替代方法是child_process.execSync方法:
const {execSync} = require('child_process');
let output = execSync('prince -v builds/pdf/book.html -o builds/pdf/book.pdf');
⚠️ 请注意,execSync调用会阻塞事件循环。
您正在查找child_process.exec
以下是示例:
const exec = require('child_process').exec;
const child = exec('cat *.js bad_file | wc -l',
(error, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
if (error !== null) {
console.log(`exec error: ${error}`);
}
});