Salve, Lívio!
Como você usou o Vite, algumas coisas podem mesmo se comportar de forma diferente.
Eu não consegui ir a fundo pra entender o motivo por trás do erro, mas para mitigar o problema você pode criar o seletor eventsAsync dentro do atom.ts
:
import { IEvent } from "interfaces/IEvent";
import { IEventsFilter } from "interfaces/IEventsFilter";
import { atom, selector } from "recoil";
// import { eventsAsync } from "./selectors";
export const eventsAsync = selector({
key: "eventsAsync",
get: async () => {
const responseHttp = await fetch("http://localhost:8000/events");
const eventsJson: IEvent[] = await responseHttp.json();
return eventsJson.map((event) => ({
...event,
start: new Date(event.start),
end: new Date(event.end),
}));
},
});
export const stateEventList = atom<IEvent[]>({
key: "stateEventList",
default: eventsAsync,
});
export const stateEventFilter = atom<IEventsFilter>({
key: "stateEventFilter",
default: {},
});
O que o recoil está reclamando é que o eventsAsync estava sendo utilizado antes de ser inicializado.
Essa é a pista que temos pra tentar encontrar a raiz do problema :)