Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js childprocess.spawn或exec通过stderr而不是stdout显示输出_Node.js_Child Process - Fatal编程技术网

Node.js childprocess.spawn或exec通过stderr而不是stdout显示输出

Node.js childprocess.spawn或exec通过stderr而不是stdout显示输出,node.js,child-process,Node.js,Child Process,此代码: const spawn = require('child_process').spawn; const convert = spawn('convert', ['nda.pdf', 'nda.jpg']); convert.stdout.on('data', function (data) { console.log('stdout: ' + data.toString()); }); convert.stderr.on('data', function (data) {

此代码:

const spawn = require('child_process').spawn;
const convert = spawn('convert', ['nda.pdf', 'nda.jpg']);

convert.stdout.on('data', function (data) {
  console.log('stdout: ' + data.toString());
});

convert.stderr.on('data', function (data) {
  console.log('stderr: ' + data.toString());
});

convert.on('exit', function (code) {
  console.log('child process exited with code ' + code.toString());
});
显示此输出:

stderr: /tmp/magick-27144xZVKt6FGxrJR1 PNG 2409x3420 2409x3420+0+0 8-bit sRGB 1.027MB 
stderr: 0.150u 0:00.149

stderr: /tmp/magick-27144xZVKt6FGxrJR2 PNG 2409x3423 2409x3423+0+0 8-bit sRGB 4.237MB 0.250u 0:00.260

stderr: /tmp/magick-27144xZVKt6FGxrJR3 PNG 2409x3423 2409x3423+0+0 8-bit sRGB 3.911MB 0.240u 0:00.239

stderr: /tmp/magick-27144xZVKt6FGxrJR4 PNG 2409x3417 2409x3417+0+0 8-bit sRGB 1.241MB 0.190u 0:00.190
...
...
...
stderr: nda.pdf=>Palette-3.jpg[3] PNG 2409x3417 2409x3417+0+0 16-bit sRGB 759KB 11.210u 0:02.369

child process exited with code 0
因此,它似乎将输出重定向到
stderr
而不是
stdout
,而且执行的命令一切正常

使用
child\u process.exec()时也会发生同样的情况


为什么会发生这种情况?

我在通过Python运行命令时遇到了类似的问题。实际问题在于您试图运行的命令本身。要知道您的命令的输出转到stderr或stdout,请执行以下操作:

root@sh> cmd > /tmp/file 
如果您看到命令的输出转到/tmp/file,那么这意味着默认情况下该命令将其输出抛出到stdout。如果它不起作用,您实际上可以看到屏幕上打印的内容

现在,如果您看到内容粘贴在屏幕上,请运行

root@sh> cmd 2> /tmp/file
现在,如果内容移动到/tmp/file,这意味着命令实际上会将其通常的输出抛出到stderr


然后,您可以确认真正的问题不是您使用的语言,而是实际命令将其输出(到stderr或stdout)的方式

我也有同样的问题。完全疯了。