child_process.exec
ожидает обратного вызова в качестве второго или третьего аргумента.Это не возвращает обещание.У вас есть несколько вариантов в зависимости от вашего варианта использования и версии узла.
Воспользуйтесь обратным вызовом и верните разрешение.
return new Promise(async resolve => {
childProcess.exec(command, (err, stout, sterr) {
resolve(err ? stout : sterr)
}
});
Вместо этого используйте spawn (сохраняя большую часть кода)
const execWithPromise = async command => {
return new Promise(async resolve => {
const process = childProcess.spawn(command);
process.on('data', data => resolve(data));
process.on('error', err => reject(err));
process.on('close', err => reject(err));
});
};
Использование execSync с try catch
return new Promise(async resolve => {
try {
resolve(childProcess.execSync(command));
} catch(error) {
reject(error)
}
});