SolidJSS
SolidJS17mo ago
10 replies
gerard

crazy bug global store + solid router

inconsistently I am hittin the following crash
App.jsx:20 TypeError: Cannot read properties of undefined (reading 'startsWith')
    at resolvePath (utils.js?v=9d490caa:16:27)
    at Object.resolvePath (routing.js?v=9d490caa:407:20)
    at Object.fn (routing.js?v=9d490caa:14:35)
    at runComputation (chunk-MRDUEL7O.js?v=9d490caa:713:22)
    at updateComputation (chunk-MRDUEL7O.js?v=9d490caa:696:3)
    at runTop (chunk-MRDUEL7O.js?v=9d490caa:806:7)
    at runQueue (chunk-MRDUEL7O.js?v=9d490caa:880:42)
    at completeUpdates (chunk-MRDUEL7O.js?v=9d490caa:835:10)
    at runUpdates (chunk-MRDUEL7O.js?v=9d490caa:824:5)
    at completeUpdates (chunk-MRDUEL7O.js?v=9d490caa:875:17)


when using a global store + createMemo something on solid js router crashes!
// session.store.js
import { createRoot } from "solid-js"
import { createStore, reconcile } from "solid-js/store"


function sessionStore () {
  const [session, setSession] = createStore({})

  return {
    session,
    setSession,
    fetchSession: () =>
      fetch("/api/v1/session").
            then(res => res.json()).
            then(data => setSession(reconcile(data) /* crash starts here, on setSession*/)),
  }
}

export default createRoot(sessionStore)


// on of my components
import s from 'session.store.js'

export default function Profile () {
    const navItems = createMemo(() => [
          { /* array of js objects */ },
          // some objects do
          { hidden: s.session.IsVerified }
        ].filter(i => !i.hidden))

// then i use nav items to render a <ul>


And it is crashing on the router, why?
the most crazy thing is that it is a little bit random, same code wasn't crashing at some time, and then it started to crash several times in a row without changing anything, I tried clearing site data several times and restart vite and it still happened

it only happens when i reload the SPA to start deep in the route that is rendering Profile if instead i navigate it works
Was this page helpful?