gpt4 book ai didi

node.js - 来自 child_process.spawn curl 请求的流式响应

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:35 24 4
gpt4 key购买 nike

我尝试运行 cURL 命令通过 child_process.spawn 安装 RVM 和 ruby​​,但总是出错:

let spawnProcess = spawn('\curl -sSL https://get.rvm.io | bash -s stable --ruby')

spawnProcess.stdout.on('data', data => {
console.log('DATA RECEIVED')
console.log(data)
})

spawnProcess.stdout.on('close', () => {
alert('done!')
})

spawnProcess.stderr.on('data', function(){
console.log('ON DATA')
console.log(arguments)
})

spawnProcess.on('error', error => {
console.log('ON ERROR')
console.log(JSON.stringify(error), error)
})

我收到的错误是:

{"code":"ENOENT","errno":"ENOENT","syscall":"spawn curl -sSL https://get.rvm.io | bash -s stable --ruby","path":"curl -sSL https://get.rvm.io | bash -s stable --ruby","spawnargs":[]} Error: spawn curl -sSL https://get.rvm.io | bash -s stable --ruby ENOENT
at exports._errnoException (util.js:890:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:182:32)
at onErrorNT (internal/child_process.js:348:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)

没有堆栈跟踪的 JSON 修饰版本是:

{
"code": "ENOENT",
"errno": "ENOENT",
"syscall": "spawn curl -sSL https://get.rvm.io | bash -s stable --ruby",
"path": "curl -sSL https://get.rvm.io | bash -s stable --ruby",
"spawnargs": []
}

如果我使用child_process.exec,效果很好,但我希望能够流式传输输出。

最佳答案

child_process.spawn() 应该传递要运行的命令的名称及其参数列表。您正在为其提供一个 shell 管道。

要使其工作,您需要运行 shell 并将管道作为参数传递:

let spawnProcess = spawn('/bin/sh', [ '-c', 'curl -sSL https://get.rvm.io | bash -s stable --ruby' ])

关于node.js - 来自 child_process.spawn curl 请求的流式响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37229144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com