Jsem relativně nový v hardcore hackování Node.js, takže vidím všechny druhy krásných nových chyb, které nemám ponětí, jak je vyřešit, když je poprvé vidím. Až do této chvíle jsem si dokázal udržet úsměv na tváři, když jsem se snažil tyto chyby opravit, což je vlastnost, která mě na sobě docela baví. Jedna z nedávných chyb, na kterou jsem narazil, byla chyba child_process
, přičemž by došlo k chybě v rámci execSync
příkaz a celá aplikace by se zhroutila; ani try/catch
zachránil by mě. Našel jsem však řešení.
JavaScript
Nejlepší způsob, jak zachytit chyby, aniž byste museli nechat aplikaci blokovat, je použít proces spawn
(nebo v tomto případě spawnSync
) metoda:
var childProcess = require('child_process'); var commitMessage = (function() { var spawn = childProcess.spawnSync('git', ['log', '--format=%B', '-n', '1']); var errorText = spawn.stderr.toString().trim(); if (errorText) { console.log('Fatal error from `git log`. You must have one commit before deploying.'); throw new Error(errorText); } else { return spawn.stdout.toString().trim(); } })();
Pomocí této metody můžete zkontrolovat stderr
vyrovnávací paměť nejprve; pokud z něj je řetězec, víte, že došlo k chybě, pokud žádný text chyby, proces byl čistý!