【发布时间】:2019-04-11 18:03:07
【问题描述】:
我正在尝试编写一个小模块,它使用child_process.spawn 来克隆一个 git repo 并返回一个 Promise,但它对我来说失败了。当我使用 spawnSync 时,它可以工作。
这是有效的同步代码。
import {spawnSync} from 'child_process';
export default async function clone(options: { url: string; path: string; }) {
const url = options.url;
const target = options.path;
const args = ['clone', url, target];
return spawnSync('git', args);
}
这是异步代码失败并返回undefined
import {spawn} from 'child_process';
export default async function clone(options: { url: string; path: string; }) {
const url = options.url;
const target = options.path;
const args = ['clone', url, target];
const process = spawn('git', args);
process.on('close', function () {
return new Promise(function (resolve, reject) {
process.addListener('error', reject);
process.addListener('exit', resolve);
});
});
}
我也试过了:
process.on('close', function (code) {
return code;
});
或
process.on('close', function (code) {
return Promise.resolve(code);
});
还有其他一些东西,比如…on('exit', function(code){
return code
})
有什么建议吗?
【问题讨论】:
标签: typescript async-await child-process spawn