I don't understand env variables in Vite
Everything works on prod but the moment I
So it seems it's an issue with getUser, which goes like this
since its a libsql issue it has something to do with auth hooking into the database
I go to db which is the one using the libsql client
i just dont see anything wrong with how im approaching things, but I get the error only on prod and dev just works fine
pnpm build && pnpm startpnpm 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'
}[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;
});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",
}),
}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" });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