我試過使用stdoutpipe 和 stderrpipe,如下所示。shell := exec.Command("npm", args...)shell.Dir = cwdoutpipe, _ := 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 3s9 packages are looking for fundingrun `npm fund` for detailsfound 0 vulnerabilities如何獲取從控制臺運行 npm install 時獲得的安裝進度條?我也嘗試過使用下面的解決方案并在運行 shell.run() 后打印緩沖區,但它也提供與上面相同的輸出。shell := exec.Command(command, args...)shell.Dir = cwdvar stderr, stdout bytes.Buffershell.Stderr = &stderrshell.Stdout = &stdoutreturn shell, &stdout, &stderr
1 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
cmd := exec.Command("npm", args...)
cmd.Dir = cwd
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
重定向到os 的 stdout 和 stderr就是訣竅。
- 1 回答
- 0 關注
- 177 瀏覽
添加回答
舉報
0/150
提交
取消