diff --git a/react-router.config.ts b/react-router.config.ts index 3ff1b9fa..6f3a3769 100644 --- a/react-router.config.ts +++ b/react-router.config.ts @@ -3,4 +3,6 @@ import type { Config } from "@react-router/dev/config"; export default { appDirectory: "src", ssr: false, + // change if deploying to a subdirectory + basename: "/", } satisfies Config; diff --git a/src/root.tsx b/src/root.tsx index e7caf40a..0e12cfa8 100644 --- a/src/root.tsx +++ b/src/root.tsx @@ -18,7 +18,11 @@ import "@fontsource-variable/inter/index.css"; // eslint-disable-next-line react-refresh/only-export-components export const links: Route.LinksFunction = () => [ - { rel: "icon", type: "icon/png", href: "/hydrant.png" }, + { + rel: "icon", + type: "icon/png", + href: import.meta.env.BASE_URL + "hydrant.png", + }, ]; export function HydrateFallback() { diff --git a/src/routes/_index.tsx b/src/routes/_index.tsx index 9dc2135c..4d745662 100644 --- a/src/routes/_index.tsx +++ b/src/routes/_index.tsx @@ -30,7 +30,9 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) { const searchParams = new URL(request.url).searchParams; const urlNameOrig = searchParams.get("t"); - const latestTerm = await fetchNoCache("/latestTerm.json"); + const latestTerm = await fetchNoCache( + import.meta.env.BASE_URL + "latestTerm.json", + ); const { urlName, shouldWarn } = getClosestUrlName( urlNameOrig, latestTerm.semester.urlName, @@ -54,7 +56,7 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) { } const { classes, lastUpdated, termInfo } = await fetchNoCache( - `/${termToFetch}.json`, + `${import.meta.env.BASE_URL}${termToFetch}.json`, ); const classesMap = new Map(Object.entries(classes)); diff --git a/src/routes/export.ts b/src/routes/export.ts index 5bf56a14..78d21cfa 100644 --- a/src/routes/export.ts +++ b/src/routes/export.ts @@ -25,7 +25,9 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) { const currentTerm = searchParams.get("t"); const callback = searchParams.get("callback"); - const latestTerm = await fetchNoCache("/latestTerm.json"); + const latestTerm = await fetchNoCache( + import.meta.env.BASE_URL + "latestTerm.json", + ); const { urlName } = getClosestUrlName( currentTerm, latestTerm.semester.urlName, @@ -34,7 +36,7 @@ export async function clientLoader({ request }: Route.ClientLoaderArgs) { const term = urlName === latestTerm.semester.urlName ? "latest" : urlName; const { classes, lastUpdated, termInfo } = await fetchNoCache( - `/${term}.json`, + `${import.meta.env.BASE_URL}${term}.json`, ); const classesMap = new Map(Object.entries(classes)); const hydrantObj = new State( diff --git a/vite.config.ts b/vite.config.ts index 34a2b491..2262abc3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,6 +6,7 @@ import checker from "vite-plugin-checker"; // https://vitejs.dev/config/ export default defineConfig({ + base: "", plugins: [ reactRouter(), tsconfigPaths(),