From bebc92395a8630dd5f05e72e8ad86b2313576e7b Mon Sep 17 00:00:00 2001 From: 2ManyProjects Date: Sat, 26 Apr 2025 00:56:36 -0500 Subject: [PATCH] fixed localhost polling --- frontend/vite.config.js | 79 ++++++++++++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 20 deletions(-) diff --git a/frontend/vite.config.js b/frontend/vite.config.js index 34dfa13..acf2e62 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -1,19 +1,62 @@ -import { defineConfig } from 'vite'; +import { defineConfig, loadEnv } from 'vite'; import react from '@vitejs/plugin-react'; import path from 'path'; -import dotenv from 'dotenv'; +import fs from 'fs'; // https://vitejs.dev/config/ -export default defineConfig(({mode}) => { - dotenv.config(); - // Load env variables +export default defineConfig(({ mode }) => { + // Load env files + const env = loadEnv(mode, process.cwd(), ''); + + // Explicitly check for ENVIRONMENT in all possible places + // 1. Check env loaded by Vite + // 2. Check process.env (for Node.js environment) + // 3. Try to read from .env file directly as fallback + let environment = env.ENVIRONMENT; + + if (!environment && process.env.ENVIRONMENT) { + environment = process.env.ENVIRONMENT; + } + + if (!environment) { + try { + const envContent = fs.readFileSync('.env', 'utf8'); + const envMatch = envContent.match(/ENVIRONMENT\s*=\s*(\w+)/); + if (envMatch && envMatch[1]) { + environment = envMatch[1]; + } + } catch (error) { + // Fallback if file can't be read + console.warn('Could not read .env file directly:', error.message); + } + } + + // Default to 'beta' if still not found + if (!environment) { + environment = 'beta'; + } + + console.log(`Vite environment detected: ${environment}`); + + const isProduction = environment === 'prod'; + + // Configure HMR based on environment + let hmrConfig; + + if (isProduction) { + // Production: use the domain name without clientPort + hmrConfig = { + host: 'rocks.2many.ca', + protocol: 'https' + }; + } else { + // Development: use localhost with explicit port + hmrConfig = { + host: 'localhost', + clientPort: 3000 + }; + } - // Determine HMR host based on environment - const isProduction = process.env.ENVIRONMENT === "prod"; - const hmrHost = isProduction ? 'rocks.2many.ca' : 'localhost'; - const hmrConfig = isProduction - ? { host: hmrHost } - : { host: hmrHost, clientPort: 3000 }; return { plugins: [react()], resolve: { @@ -32,14 +75,6 @@ export default defineConfig(({mode}) => { } }, server: { - // port: 3000, - // proxy: { - // '/api': { - // target: 'http://localhost:4000', - // changeOrigin: true, - // secure: false - // } - // }, allowedHosts: ['localhost', 'rocks.2many.ca'], host: '0.0.0.0', port: 3000, @@ -53,6 +88,10 @@ export default defineConfig(({mode}) => { assetsDir: 'assets', emptyOutDir: true, sourcemap: process.env.NODE_ENV !== 'production' + }, + // Make environment variables available to the client code + define: { + 'import.meta.env.ENVIRONMENT': JSON.stringify(environment) } - } + }; }); \ No newline at end of file