Solid-Start vinxi/http issue with useWebRequest
Hey, when using
Here's the exact code that errors, I know it's getWebRequest as the error goes away after this.
getWebRequestgetWebRequest 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.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)!;
}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)!;
}