Вызов системных команд из node.js и отображение их результатов
Пытаюсь отдать через gulp команды в системную консоль:
const { exec } = require("child_process");
var git_commant = "cd django-hamlpy & git add . & git commit -m \""+ desc +"\" & git push";
exec(git_commant, (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
В целом вроде работает. Но почему-то сообщения у меня отображаются в stderr. Почему так?
А так же само сообщение обрезается. Обычно при удачном выполенении таких команд в консоли вывод такой:
Enumerating objects: 35, done.
Counting objects: 100% (35/35), done.
Delta compression using up to 4 threads
Compressing objects: 100% (19/19), done.
Writing objects: 100% (22/22), 3.74 KiB | 273.00 KiB/s, done.
Total 22 (delta 11), reused 0 (delta 0)
remote: Resolving deltas: 100% (11/11), completed with 11 local objects.
To https://github.com/Sanshain/django_hamlpy.git
9629024..8c0deab master -> master
Ответы (1 шт):
Автор решения: PonyCoder
→ Ссылка
Сообщения отображаются в stderr потому что их и отправили в stderr. В вашем случае это делает "Git".
И обрезаются сообщения тоже из-за него. При клонировании репозитория он динамически отрисовывает в консоль нечто вроде прогресс-бара, в результате чего поток много раз очищается вместе со всеми сообщениями
