[object Object]

← 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 →