Files
smartDriveEEUniApp/common/config.js
2025-11-28 10:14:03 +08:00

87 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* API 配置
* 统一管理后端接口地址,并根据环境自动切换
*/
import envConfig from '@/common/env.js'
const API_TARGETS = {
local: 'http://localhost:8090/',
prod: 'https://api.huayang-star.com/'
}
const ENV_ALIAS = {
development: 'local',
production: 'prod',
local: 'local',
prod: 'prod'
}
function normalizeBaseUrl(url) {
return url.endsWith('/') ? url : `${url}/`
}
function resolveApiEnv() {
// 优先读取 env.js 配置文件
const fileEnv = envConfig?.apiEnv
if (fileEnv) {
const mapped = ENV_ALIAS[fileEnv.toLowerCase()]
if (mapped) {
console.log('[API Config] 使用 env.js 配置:', fileEnv, '=>', mapped)
return mapped
}
}
// 其次读取环境变量
const runtimeEnv =
typeof process !== 'undefined' && process?.env
? process.env.UNI_APP_API_ENV || process.env.NODE_ENV
: ''
const aliasKey = runtimeEnv ? runtimeEnv.toLowerCase() : ''
const env = ENV_ALIAS[aliasKey] || 'prod'
console.log('[API Config] 使用环境变量:', runtimeEnv, '=>', env)
return env
}
const API_ENV = resolveApiEnv()
// API 基础地址(根据当前环境自动判定)
export const API_BASE_URL = normalizeBaseUrl(API_TARGETS[API_ENV] || API_TARGETS.prod)
// 输出当前配置信息(便于调试)
console.log('[API Config] 当前环境:', API_ENV)
console.log('[API Config] API_BASE_URL:', API_BASE_URL)
// 当前 API 环境local / prod
export function getApiEnv() {
return API_ENV
}
// 导出完整的 API URL 构建函数
// H5环境下local环境直接使用完整URL避免代理配置问题prod环境使用代理路径
// 其他环境使用完整URL
export function getApiUrl(path = '') {
const apiPath = path.startsWith('/') ? path : `/${path}`
// #ifdef H5
// H5环境下local环境直接使用完整URLprod环境使用代理路径
if (API_ENV === 'local') {
// local环境直接使用完整URL避免代理配置问题
const fullPath = apiPath.startsWith('/') ? apiPath.slice(1) : apiPath
const fullUrl = `${API_BASE_URL}${fullPath}`
console.log('[API Config] H5环境(local)直接使用完整URL:', fullUrl)
return fullUrl
} else {
// prod环境使用代理路径代理配置在manifest.json中
console.log('[API Config] H5环境(prod)使用代理路径:', apiPath, '(代理target:', API_BASE_URL.replace(/\/$/, ''), ')')
return apiPath
}
// #endif
// #ifndef H5
// 其他环境使用完整URL
const fullPath = apiPath.startsWith('/') ? apiPath.slice(1) : apiPath
const fullUrl = `${API_BASE_URL}${fullPath}`
console.log('[API Config] 非H5环境使用完整URL:', fullUrl)
return fullUrl
// #endif
}