SolidJSS
SolidJSโ€ข2y agoโ€ข
13 replies
Christian

Solid-Start vinxi/http issue with useWebRequest

Hey, when using getWebRequest from vinxi/http inside a Context I get the error,

Error: Module "node:async_hooks" has been externalized for browser compatibility. Cannot access "node:async_hooks.AsyncLocalStorage" in client code.


Here's the exact code that errors, I know it's getWebRequest as the error goes away after this.
import { createContext, createResource, createSignal, useContext } from 'solid-js';
import { isServer } from 'solid-js/web';
import { getUser } from '../utils/userUtils';
import { getWebRequest } from 'vinxi/http';

type UserDataType = [
  user: any,
]

const UserContext = createContext<UserDataType>();

export function UserProvider(props: any) {
  const [ user ] = createResource(fetchUser); const userData: UserDataType = [ user ];

  'use server';
  async function fetchUser() {
    if (!isServer) return;

    const request = getWebRequest();
    
    try {
      return await getUser(request);
    } catch (e) {
      console.log(e);

      return null;
    }
  }

  return (
    <UserContext.Provider value={userData}>
      {props.children}
    </UserContext.Provider>
  );
}

export function useUser() {
  return useContext(UserContext)!;
}
Was this page helpful?