From 31aae4c196396c353cf9fe91c07e6acfdca83ea1 Mon Sep 17 00:00:00 2001 From: NERDDISCO <492378+TimPietrusky@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:46:55 +0200 Subject: [PATCH] feat: move error handling into own function (#7) * feat: move error handling into own function * feat: use specific error code when code is unkown * refactor: remove duplicated return --- base.js | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/base.js b/base.js index b7b1219..e7e68a9 100644 --- a/base.js +++ b/base.js @@ -107,15 +107,9 @@ export async function evolve(generation) { await import(`./${nextFilename}`); } catch (error) { spawns--; - const message = (error.response?.message ?? error.message ?? "unknown error").trim(); spinner.fail(`Generation ${generation} | ${spawns} spawns left`); - console.error(error); - // The AI might increment too often - if (message.startsWith("ENOENT") && generation > 1) { - await evolve(generation - 1); - } else { - throw error; - } + + await handleError(error, generation); } } @@ -126,3 +120,39 @@ export function pad(n) { export function buildFilename(currentGeneration) { return path.join(".", `generation-${pad(currentGeneration)}.js`); } + +export async function handleError(error, generation) { + const message = ( + error.response?.data?.error.message ?? + error.message ?? + "unknown error" + ).trim(); + + const code = error.response?.status ?? error.code ?? "UNKOWN_CODE"; + + if (code === "ERR_MODULE_NOT_FOUND") { + console.error(message); + return; + } + + // The AI might increment too often + if (message.startsWith("ENOENT") && generation > 1) { + await evolve(generation - 1); + } + + // Errors in the API + if (error.response && code !== 200) { + console.error(`${code}: ${message}`); + + if (code === 401) { + console.error( + "Please make sure to use a valid API key and that you have set OPENAI_SECRET in .env" + ); + } + + return; + } + + console.error(error); + throw error; +}