TanStackT
TanStack10mo ago
33 replies
nursing-lime

I don't understand env variables in Vite

Everything works on prod but the moment I pnpm build && pnpm start locally I get this error.
[request error] [unhandled] [GET] http://localhost:3000/_server/src_routes_root_tsx--getUser_createServerFn_handler?payload=%7B%22data%22%3A%7B%22%24undefined%22%3A0%7D%2C%22context%22%3A%7B%7D%7D&createServerFn
 LibsqlError: URL_INVALID: The URL 'undefined' is not in a valid format
    at parseUri (file:///home/barsi/dev/senatoriables/.output/server/node_modules/@libsql/core/lib-esm/uri.js:9:15)
    ... 8 lines matching cause stack trace ...
    at async Object.callAsync (file:///home/barsi/dev/senatoriables/.output/server/chunks/nitro/nitro.mjs:4026:16) {
  cause: LibsqlError: URL_INVALID: The URL 'undefined' is not in a valid format
      at parseUri (file:///home/barsi/dev/senatoriables/.output/server/node_modules/@libsql/core/lib-esm/uri.js:9:15)
      at expandConfig (file:///home/barsi/dev/senatoriables/.output/server/node_modules/@libsql/core/lib-esm/config.js:25:17)
      at createClient (file:///home/barsi/dev/senatoriables/.output/server/node_modules/@libsql/client/lib-esm/node.js:11:26)
      at file:///home/barsi/dev/senatoriables/.output/server/chunks/build/auth-YWrqIeVg.mjs:165:2495
      at ModuleJob.run (node:internal/modules/esm/module_job:271:25)
      at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:578:26)
      at async ce$1 (file:///home/barsi/dev/senatoriables/.output/server/chunks/nitro/nitro.mjs:5007:11)
      at async Object.ie$1 [as handler] (file:///home/barsi/dev/senatoriables/.output/server/chunks/nitro/nitro.mjs:4994:10)
      at async file:///home/barsi/dev/senatoriables/.output/server/chunks/nitro/nitro.mjs:1587:19
      at async Object.callAsync (file:///home/barsi/dev/senatoriables/.output/server/chunks/nitro/nitro.mjs:4026:16) {
    code: 'URL_INVALID',
    rawCode: undefined,
    [cause]: undefined
  },
  statusCode: 500,
  fatal: false,
  unhandled: true,
  statusMessage: undefined,
  data: undefined
}
{
  error: true,
  url: 'http://localhost:3000/_server/src_routes_root_tsx--getUser_createServerFn_handler?payload=%7B%22data%22%3A%7B%22%24undefined%22%3A0%7D%2C%22context%22%3A%7B%7D%7D&createServerFn',
  statusCode: 500,
  statusMessage: 'Server Error',
  message: 'Server Error',
  routerCode: 'BEFORE_LOAD'
}

So it seems it's an issue with getUser, which goes like this
const getUser = createServerFn({ method: "GET" }).handler(async () => {
  const { headers } = getWebRequest()!;
  const session = await auth.api.getSession({ headers });

  return session?.user || null;
});

since its a libsql issue it has something to do with auth hooking into the database

import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { admin } from "better-auth/plugins";

import { db } from "./db";

export const auth = betterAuth({
  advanced: {
    cookiePrefix: "senatoriables",
  },
  baseURL: process.env.VITE_BASE_URL,
  database: drizzleAdapter(db, {
    provider: "sqlite",
  }),
}


I go to db which is the one using the libsql client
import { type Client, createClient } from "@libsql/client";
import { drizzle } from "drizzle-orm/libsql";
import * as schema from "./schema";

const client = createClient({
  url: process.env.DATABASE_URL as string,
  authToken: process.env.DATABASE_AUTH_TOKEN as string,
});

export const db = drizzle(client, { schema, casing: "snake_case" });


i just dont see anything wrong with how im approaching things, but I get the error only on prod and dev just works fine
Was this page helpful?