Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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
Javascript Docker pull在通过Node.js子进程同步执行时未提供实时下载大小/总大小_Javascript_Node.js_Docker_Exec_Child Process - Fatal编程技术网

Javascript Docker pull在通过Node.js子进程同步执行时未提供实时下载大小/总大小

Javascript Docker pull在通过Node.js子进程同步执行时未提供实时下载大小/总大小,javascript,node.js,docker,exec,child-process,Javascript,Node.js,Docker,Exec,Child Process,当我运行docker时,从我的终端拉取我的图像,这就是我的输出的样子 59e69571f6c7: Pull complete 43da27f69c98: Pull complete d22174e9eddd: Pull complete cc0ac48a6d21: Downloading 312.3 MB/2.888 GB b47aa969d5dc: Download complete 当我运行一段Node.js代码时 const { exec } = require('child

当我运行
docker时,从我的终端拉取我的图像
,这就是我的输出的样子

 59e69571f6c7: Pull complete 
 43da27f69c98: Pull complete
 d22174e9eddd: Pull complete
 cc0ac48a6d21: Downloading 312.3 MB/2.888 GB
 b47aa969d5dc: Download complete
当我运行一段Node.js代码时

const { exec } = require('child_process');
 exec('docker pull my-image', (error, stdout, stderr) => {
   if (error) {
     console.error('exec error: ${error}');
     return;
   }
   console.log('stdout: ${stdout}');
   console.log('stderr: ${stderr}');
 });
我的输出如下所示

c49bda5ed612: Waiting
43da27f69c98: Verifying Checksum
43da27f69c98: Download complete
d22174e9eddd: Verifying Checksum
d22174e9eddd: Download complete
b47aa969d5dc: Verifying Checksum
我期望得到同样的结果。主要是关于下载量和剩余量的信息。如果我想根据下载图像的大小对进度条进行处理,则无法处理此输出

请让我知道是否有办法找到实时下载大小状态


仅供参考如果您从curl下载任何二进制文件,在Node.js exec命令中,您将获得实时下载字节数/总数据

您提到的输出仅在
docker
CLI在分配了伪tty的地方运行时发生。通过以下方式运行命令,可以强制输出在命令行上不具有伪tty:

docker pull my-image | cat
极点会发生,然后你会得到和你上面提到的一样的输出

您调用
docker
CLI的方式可能没有分配伪tty,导致它没有将进度信息流式传输到标准输出


尝试使用分配的伪tty调用可执行文件以获得所需的行为。

那么问题是什么?
312.3 MB/2.888 GB
在Node中执行时看不到此信息。js感谢您的解释。我对这个概念不太了解。现在我很熟悉了。然而,我试图在nodejs spwan/child进程中找到启用tty,但没有成功。如果你能告诉我做这件事的方法,那就太好了。