improve error message for failed compile_state (#4702)

This commit is contained in:
Khaleel Al-Adhami 2025-01-28 16:07:53 -08:00 committed by GitHub
parent 3bd2bea54d
commit 2a922214a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 1 deletions

View File

@ -2,6 +2,8 @@
from __future__ import annotations from __future__ import annotations
import traceback
from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Any, Callable, Dict, Optional, Type, Union from typing import Any, Callable, Dict, Optional, Type, Union
from urllib.parse import urlparse from urllib.parse import urlparse
@ -165,8 +167,12 @@ def compile_state(state: Type[BaseState]) -> dict:
try: try:
initial_state = state(_reflex_internal_init=True).dict(initial=True) initial_state = state(_reflex_internal_init=True).dict(initial=True)
except Exception as e: except Exception as e:
timestamp = datetime.now().strftime("%Y-%m-%d__%H-%M-%S")
constants.Reflex.LOGS_DIR.mkdir(parents=True, exist_ok=True)
log_path = constants.Reflex.LOGS_DIR / f"state_compile_error_{timestamp}.log"
traceback.TracebackException.from_exception(e).print(file=log_path.open("w+"))
console.warn( console.warn(
f"Failed to compile initial state with computed vars, excluding them: {e}" f"Failed to compile initial state with computed vars. Error log saved to {log_path}"
) )
initial_state = state(_reflex_internal_init=True).dict( initial_state = state(_reflex_internal_init=True).dict(
initial=True, include_computed=False initial=True, include_computed=False

View File

@ -75,6 +75,8 @@ class Reflex(SimpleNamespace):
# If user sets REFLEX_DIR envroment variable use that instead. # If user sets REFLEX_DIR envroment variable use that instead.
DIR = PlatformDirs(MODULE_NAME, False).user_data_path DIR = PlatformDirs(MODULE_NAME, False).user_data_path
LOGS_DIR = DIR / "logs"
# The root directory of the reflex library. # The root directory of the reflex library.
ROOT_DIR = Path(__file__).parents[2] ROOT_DIR = Path(__file__).parents[2]