Структура проекта:.
Код: Выделить всё
project/
├── .env
├── frontend/
│ ├── vite.config.js
│ └── ...
Файл vite.config.js находится внутри папки внешнего интерфейса.
.env-файл
Код: Выделить всё
APP_PORT=5001
Код: Выделить всё
import { defineConfig, loadEnv } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
export default ({ mode }) => {
// Load environment variables for the current mode
const env = loadEnv(mode, path.resolve(__dirname, '../', ''));
const port = env.APP_PORT;
console.log(
'Loaded environment variables for mode:', env,
'Path:', __dirname,
'Port:', port);
return defineConfig({
root: 'frontend',
plugins: [react()],
optimizeDeps: {
exclude: ['lucide-react'],
},
server: {
proxy: {
'/api': {
target: `http://127.0.0.1:${port || '5000'}`, // Use the loaded env variable
changeOrigin: true,
secure: false,
rewrite: (path) => path.replace(/^\/api/, ''),
configure: (proxy) => {
proxy.on('proxyReq', (proxyReq, req) => {
console.log('Proxying request:', req.url, 'to:', proxyReq.getHeader('host'));
});
}
}
}
}
})
};
Что я пробовал:
1. Убедитесь, что файл .env находится в корневом каталоге и содержит правильную переменную (APP_PORT=5001).
2. Перезапустил сервер разработки Vite после внесения изменений в файл .env.
3. Убедился, что path.resolve(__dirname, '../') указывает на правильный каталог для файла .env.
4. Добавлен журнал отладки для проверки загруженных переменных среды, но я получаю неопределенное значение.
Ожидаемое поведение:
Переменная APP_PORT из файла .env должна быть загружена, и прокси-сервер в vite.config.js должен использовать порт 5001.
Среда:.
Узел: v23.4.0
VITE: v6.0.3
ОС: macOS
Подробнее здесь: https://stackoverflow.com/questions/793 ... -config-js
Мобильная версия