diff --git a/public/script.js b/public/script.js index 2d144bc5e..b735a8565 100644 --- a/public/script.js +++ b/public/script.js @@ -2789,7 +2789,8 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, }); if (!response.ok) { - throw new Error(response.status); + const error = await response.json(); + throw error; } const data = await response.json(); @@ -2959,6 +2960,10 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, }; function onError(exception) { + if (typeof exception?.error?.message === 'string') { + toastr.error(exception.error.message, 'Error', { timeOut: 10000, extendedTimeOut: 20000 }); + } + reject(exception); $("#send_textarea").removeAttr('disabled'); is_send_press = false; diff --git a/server.js b/server.js index 9566da3e3..18b5feb6c 100644 --- a/server.js +++ b/server.js @@ -506,8 +506,16 @@ app.post("/generate", jsonParser, async function (request, response_generate = r return response.body.pipe(response_generate); } else { if (!response.ok) { - console.log(`Kobold returned error: ${response.status} ${response.statusText} ${await response.text()}`); - return response.status(response.status).send({ error: true }); + const errorText = await response.text(); + console.log(`Kobold returned error: ${response.status} ${response.statusText} ${errorText}`); + + try { + const errorJson = JSON.parse(errorText); + const message = errorJson?.detail?.msg || errorText; + return response_generate.status(400).send({ error: { message } }); + } catch { + return response_generate.status(400).send({ error: { message: errorText } }); + } } const data = await response.json(); @@ -1798,7 +1806,7 @@ app.post("/generate_novelai", jsonParser, async function (request, response_gene request.socket.on('close', function () { controller.abort(); }); - + const novelai = require('./src/novelai'); const isNewModel = (request.body.model.includes('clio') || request.body.model.includes('kayra')); const isKrake = request.body.model.includes('krake');