我需要使用 node 来生成某些文件的差异。我已经尝试了diff npm包,虽然效果很好,但它的性能远低于您在/usr/bin/中找到的diff版本。
当我尝试使用 exec 运行 diff 命令时,它总是出错。
var childProcess = require('child_process');
var cmd = "diff /path/to/file1.txt /path/to/file2.txt";
childProcess.exec(cmd, (error, stdout, stderr) => {
if(error) {
console.log(error);
} else {
console.log(stdout);
}
});
输出:
{ [Error: Command failed: /bin/sh -c diff /path/to/file1.txt /path/to/file2.txt
]
killed: false,
code: 1,
signal: null,
cmd: '/bin/sh -c diff /path/to/file1.txt /path/to/file2.txt' }
如果我自己在命令行上运行该命令,它可以正常工作。
我尝试运行/usr/bin/diff
而不仅仅是diff
.
我尝试了各种不同形式的引用。
我尝试过的所有其他命令,使用完全相同的文件,都有效。 cat
、wc
等。
有什么想法吗?
Welp,我正在回答我自己的问题。
如果发现差异,diff
命令将返回失败退出代码。因此,从未接到console.log(stdout)
电话。如果我忽略该错误,一切正常。
var childProcess = require('child_process');
var cmd = "diff /path/to/file1.txt /path/to/file2.txt";
childProcess.exec(cmd, (error, stdout, stderr) => {
console.log(stdout);
});
就像一个魅力。