INNER CODE UNIT · TypeScript
Promise
1095071913/maozi-cloud · maozi-cloud-develop-admin/electron/configs/index.ts:53
return new Promise((resolve, reject) => {
void (async () => {
const pathEnv = await getShellPath()
const child = spawn(cmd, args, { env: { ...process.env, PATH: pathEnv } })
let out = ''
let err = ''
const timer = setTimeout(() => child.kill(), timeoutMs)
child.stdout.on('data', (d) => (out += d))
child.stderr.on('data', (d) => (err += d))
child.on('error', (e) => {
clearTimeout(timer)
reject(new Error(`无法执行 ${cmd}: ${e.message}`))
})
child.on('close', (code) => {
clearTimeout(timer)
const text = (out || err).trim()
if (code === 0) resolve(text || '执行成功')
else reject(new Error(text || `执行失败,退出码 ${code}`))