vite.config.ts: use loadEnv() instead of bare process.env

process.env inside defineConfig() only sees whatever the OS process
environment already has — it does not automatically contain a project's
.env file contents just because Vite loads that file elsewhere (envPrefix
only reaches import.meta.env in app code, a separate mechanism). The
previous commit's PORT/ALLOWED_HOST read from process.env worked only by
coincidence of how a process happened to be launched, and silently did
nothing when it wasn't. loadEnv() is Vite's own documented API for reading
.env files inside the config itself, independent of the launch method.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
metatroncubeswdev 2026-10-17 20:09:51 -04:00
parent bed0504418
commit 4f52d02df1

View File

@ -1,5 +1,5 @@
import { tanstackStart } from "@tanstack/react-start/plugin/vite";
import { defineConfig } from "vite";
import { defineConfig, loadEnv } from "vite";
import tsConfigPaths from "vite-tsconfig-paths";
import viteReact from "@vitejs/plugin-react";
import tailwindcss from "@tailwindcss/vite";
@ -7,19 +7,27 @@ import { cloudflare } from "@cloudflare/vite-plugin";
import { devtools } from "@tanstack/devtools-vite";
import { leanWorkerBundle } from "./vite-plugin-lean-worker-bundle";
export default defineConfig(() => {
export default defineConfig(({ mode }) => {
// PORT/ALLOWED_HOST are documented self-host knobs (SELF_HOSTING_DOCKER.md,
// compose.yaml) but were never actually read here — every deployment was
// silently stuck on port 3001 and this one hardcoded domain, breaking any
// second instance on a different domain or port. Defaults keep existing
// deployments that don't set these working exactly as before.
const port = Number(process.env.PORT) || 3001;
//
// Read via Vite's own loadEnv(), not bare process.env: process.env inside
// this config function only sees whatever the OS process environment
// already has (e.g. exported by the shell or pm2's ecosystem file) —
// Vite's .env-file loading (envPrefix below) only reaches import.meta.env
// in app code, not this function. loadEnv reads the same .env files Vite
// always has, regardless of how the process was launched.
const env = loadEnv(mode, process.cwd(), "");
const port = Number(env.PORT) || 3001;
const showDevtools = false;
const allowedHosts = [
"seo.thedomainnest.com",
process.env.ALLOWED_HOST,
env.ALLOWED_HOST,
].filter((host): host is string => Boolean(host));
return {