我试过使用stdoutpipe 和 stderrpipe,如下所示。
shell := exec.Command("npm", args...)
shell.Dir = cwd
outpipe, _ := shell.StdoutPipe()
errpipe, _ := shell.StderrPipe()
shell.Start()
go func(pipe io.ReadCloser) {
reader := bufio.NewReader(pipe)
line, err := reader.ReadString('\n')
for err == nil {
fmt.Println(string(line))
line, err = reader.ReadString('\n')
}
fmt.Println("exited")
}(outpipe)
go func(pipe io.ReadCloser) {
reader := bufio.NewReader(pipe)
line, err := reader.ReadString('\n')
for err == nil {
fmt.Println(string(line))
line, err = reader.ReadString('\n')
}
fmt.Println("exited")
}(errpipe)
err := shell.Wait()
if err != nil {
fmt.Println(err)
}
但是我只得到输出:
added 87 packages, and audited 88 packages in 3s
9 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
如何获取从控制台运行 npm install 时获得的安装进度条?
我也尝试过使用下面的解决方案并在运行 shell.run() 后打印缓冲区,但它也提供与上面相同的输出。
shell := exec.Command(command, args...)
shell.Dir = cwd
var stderr, stdout bytes.Buffer
shell.Stderr = &stderr
shell.Stdout = &stdout
return shell, &stdout, &stderr
慕尼黑5688855
相关分类