diff --git a/Dockerfile b/Dockerfile index f2716a3..c5782cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,9 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories ARG NODE_ENV=production ENV NODE_ENV=${NODE_ENV} +# 输出构建环境信息 +RUN echo "Building for environment: ${NODE_ENV}" + # 安装 yarn RUN apk add --no-cache yarn @@ -27,12 +30,26 @@ RUN yarn install --frozen-lockfile # 复制项目文件 COPY . . +# 创建或更新环境文件 +RUN echo "NODE_ENV=${NODE_ENV}" > .env && \ + if [ "$NODE_ENV" = "production" ]; then \ + echo "VUE_APP_API_URL=https://api.beefast.co" >> .env; \ + elif [ "$NODE_ENV" = "testing" ]; then \ + echo "VUE_APP_API_URL=https://api-dev.beefast.co" >> .env; \ + else \ + echo "VUE_APP_API_URL=http://localhost:8000" >> .env; \ + fi && \ + cat .env + # 根据环境变量选择构建命令 RUN if [ "$NODE_ENV" = "production" ]; then \ + echo "Running production build" && \ yarn build:prod; \ elif [ "$NODE_ENV" = "testing" ]; then \ + echo "Running testing build" && \ yarn build:test; \ else \ + echo "Running development build" && \ yarn build:dev; \ fi diff --git a/src/main.js b/src/main.js index b80cb2d..76d6423 100644 --- a/src/main.js +++ b/src/main.js @@ -4,6 +4,11 @@ import App from './App.vue'; import router from './router'; import store from './store'; import 'ant-design-vue/dist/antd.css'; +import debug from './utils/debug'; + +// 输出环境信息 +console.log('当前运行环境:', process.env.NODE_ENV); +console.log('API基础URL:', process.env.VUE_APP_API_URL); const app = createApp(App); @@ -11,4 +16,7 @@ app.use(Antd); app.use(router); app.use(store); +// 挂载调试工具到全局 +app.config.globalProperties.$debug = debug; + app.mount('#app'); \ No newline at end of file diff --git a/src/utils/config.js b/src/utils/config.js index 0cf1b07..f2dd5b4 100644 --- a/src/utils/config.js +++ b/src/utils/config.js @@ -1,8 +1,21 @@ // 环境配置 const ENV = process.env.NODE_ENV || 'development'; -// API 配置 -const API_BASE_URL = process.env.VUE_APP_API_URL; +// 根据环境确定 API URL +let apiUrl; +if (ENV === 'testing') { + apiUrl = 'https://api-dev.beefast.co'; +} else if (ENV === 'production') { + apiUrl = 'https://api.beefast.co'; +} else { + apiUrl = 'http://localhost:8000'; +} + +// 使用环境变量中的 API URL(如果存在) +const API_BASE_URL = process.env.VUE_APP_API_URL || apiUrl; + +console.log('配置文件中的环境:', ENV); +console.log('配置文件中的API URL:', API_BASE_URL); // 当前环境的 API 基础地址 const BASE_URL = API_BASE_URL; diff --git a/src/utils/debug.js b/src/utils/debug.js new file mode 100644 index 0000000..631e58b --- /dev/null +++ b/src/utils/debug.js @@ -0,0 +1,12 @@ +// 调试环境变量 +console.log('===== 环境变量调试信息 ====='); +console.log('NODE_ENV:', process.env.NODE_ENV); +console.log('VUE_APP_API_URL:', process.env.VUE_APP_API_URL); +console.log('==========================='); + +export default { + logEnv: () => { + console.log('当前环境:', process.env.NODE_ENV); + console.log('API地址:', process.env.VUE_APP_API_URL); + } +}; \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index a37bf12..b4f0609 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -12,23 +12,34 @@ module.exports = (env, argv) => { // 确定环境 const nodeEnv = env?.testing ? 'testing' : mode; + console.log('构建环境:', nodeEnv); + console.log('命令行参数:', env); + // 加载对应的环境变量文件 const envFile = `.env.${nodeEnv}`; const defaultEnvFile = '.env'; + console.log('尝试加载环境文件:', envFile); + // 加载环境变量 let envConfig = {}; // 先尝试加载默认环境变量文件 if (fs.existsSync(defaultEnvFile)) { + console.log('加载默认环境文件:', defaultEnvFile); envConfig = dotenv.parse(fs.readFileSync(defaultEnvFile)); } // 再尝试加载特定环境的环境变量文件 if (fs.existsSync(envFile)) { + console.log('加载特定环境文件:', envFile); envConfig = { ...envConfig, ...dotenv.parse(fs.readFileSync(envFile)) }; + } else { + console.log('环境文件不存在:', envFile); } + console.log('加载的环境变量:', envConfig); + // 将环境变量转换为 webpack 定义插件需要的格式 const envKeys = Object.keys(envConfig).reduce((prev, next) => { prev[`process.env.${next}`] = JSON.stringify(envConfig[next]); @@ -38,7 +49,16 @@ module.exports = (env, argv) => { // 确保 NODE_ENV 被正确设置 envKeys['process.env.NODE_ENV'] = JSON.stringify(nodeEnv); - console.log(`Building for ${nodeEnv} environment`); + // 直接设置 VUE_APP_API_URL + if (nodeEnv === 'testing') { + envKeys['process.env.VUE_APP_API_URL'] = JSON.stringify('https://api-dev.beefast.co'); + } else if (nodeEnv === 'production') { + envKeys['process.env.VUE_APP_API_URL'] = JSON.stringify('https://api.beefast.co'); + } else { + envKeys['process.env.VUE_APP_API_URL'] = JSON.stringify('http://localhost:8000'); + } + + console.log('注入的环境变量:', envKeys); return { mode,