← back to Exo
add better error handling:
6d12deab2ab158e527e402fb9dfc8d7b66f7cb3d · 2024-11-12 21:04:05 -0500 · Daniel Newman
Files touched
Diff
commit 6d12deab2ab158e527e402fb9dfc8d7b66f7cb3d
Author: Daniel Newman <me@dtnewman.com>
Date: Tue Nov 12 21:04:05 2024 -0500
add better error handling:
---
exo/tinychat/index.js | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/exo/tinychat/index.js b/exo/tinychat/index.js
index 960be26c..2d2c5452 100644
--- a/exo/tinychat/index.js
+++ b/exo/tinychat/index.js
@@ -75,12 +75,21 @@ document.addEventListener("alpine:init", () => {
async populateSelector() {
try {
const response = await fetch(`${window.location.origin}/modelpool`);
+ const responseText = await response.text(); // Get raw response text first
+
if (!response.ok) {
- const errorResBody = await response.json();
- throw new Error(`Failed to get model pool: ${errorResBody?.detail || 'Unknown error'}`);
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+
+ // Try to parse the response text
+ let responseJson;
+ try {
+ responseJson = JSON.parse(responseText);
+ } catch (parseError) {
+ console.error('Failed to parse JSON:', parseError);
+ throw new Error(`Invalid JSON response: ${responseText}`);
}
- const responseJson = await response.json();
const sel = document.querySelector(".model-select");
if (!sel) {
throw new Error("Could not find model selector element");
@@ -90,6 +99,9 @@ document.addEventListener("alpine:init", () => {
sel.innerHTML = '';
const modelDict = responseJson["model pool"];
+ if (!modelDict) {
+ throw new Error("Response missing 'model pool' property");
+ }
Object.entries(modelDict).forEach(([key, value]) => {
const opt = document.createElement("option");
@@ -106,7 +118,7 @@ document.addEventListener("alpine:init", () => {
}
} catch (error) {
console.error("Error populating model selector:", error);
- this.errorMessage = error.message;
+ this.errorMessage = `Failed to load models: ${error.message}`;
}
},
← c43ad15c Daniel changes
·
back to Exo
·
Updated unit tests b787c676 →