This commit is contained in:
aaron 2025-03-09 10:54:35 +08:00
parent 6ad0742e9c
commit 37c01d7bac
5 changed files with 73 additions and 3 deletions

View File

@ -8,6 +8,9 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
ARG NODE_ENV=production ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV} ENV NODE_ENV=${NODE_ENV}
# 输出构建环境信息
RUN echo "Building for environment: ${NODE_ENV}"
# 安装 yarn # 安装 yarn
RUN apk add --no-cache yarn RUN apk add --no-cache yarn
@ -27,12 +30,26 @@ RUN yarn install --frozen-lockfile
# 复制项目文件 # 复制项目文件
COPY . . 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 \ RUN if [ "$NODE_ENV" = "production" ]; then \
echo "Running production build" && \
yarn build:prod; \ yarn build:prod; \
elif [ "$NODE_ENV" = "testing" ]; then \ elif [ "$NODE_ENV" = "testing" ]; then \
echo "Running testing build" && \
yarn build:test; \ yarn build:test; \
else \ else \
echo "Running development build" && \
yarn build:dev; \ yarn build:dev; \
fi fi

View File

@ -4,6 +4,11 @@ import App from './App.vue';
import router from './router'; import router from './router';
import store from './store'; import store from './store';
import 'ant-design-vue/dist/antd.css'; 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); const app = createApp(App);
@ -11,4 +16,7 @@ app.use(Antd);
app.use(router); app.use(router);
app.use(store); app.use(store);
// 挂载调试工具到全局
app.config.globalProperties.$debug = debug;
app.mount('#app'); app.mount('#app');

View File

@ -1,8 +1,21 @@
// 环境配置 // 环境配置
const ENV = process.env.NODE_ENV || 'development'; const ENV = process.env.NODE_ENV || 'development';
// API 配置 // 根据环境确定 API URL
const API_BASE_URL = process.env.VUE_APP_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 基础地址 // 当前环境的 API 基础地址
const BASE_URL = API_BASE_URL; const BASE_URL = API_BASE_URL;

12
src/utils/debug.js Normal file
View File

@ -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);
}
};

View File

@ -12,23 +12,34 @@ module.exports = (env, argv) => {
// 确定环境 // 确定环境
const nodeEnv = env?.testing ? 'testing' : mode; const nodeEnv = env?.testing ? 'testing' : mode;
console.log('构建环境:', nodeEnv);
console.log('命令行参数:', env);
// 加载对应的环境变量文件 // 加载对应的环境变量文件
const envFile = `.env.${nodeEnv}`; const envFile = `.env.${nodeEnv}`;
const defaultEnvFile = '.env'; const defaultEnvFile = '.env';
console.log('尝试加载环境文件:', envFile);
// 加载环境变量 // 加载环境变量
let envConfig = {}; let envConfig = {};
// 先尝试加载默认环境变量文件 // 先尝试加载默认环境变量文件
if (fs.existsSync(defaultEnvFile)) { if (fs.existsSync(defaultEnvFile)) {
console.log('加载默认环境文件:', defaultEnvFile);
envConfig = dotenv.parse(fs.readFileSync(defaultEnvFile)); envConfig = dotenv.parse(fs.readFileSync(defaultEnvFile));
} }
// 再尝试加载特定环境的环境变量文件 // 再尝试加载特定环境的环境变量文件
if (fs.existsSync(envFile)) { if (fs.existsSync(envFile)) {
console.log('加载特定环境文件:', envFile);
envConfig = { ...envConfig, ...dotenv.parse(fs.readFileSync(envFile)) }; envConfig = { ...envConfig, ...dotenv.parse(fs.readFileSync(envFile)) };
} else {
console.log('环境文件不存在:', envFile);
} }
console.log('加载的环境变量:', envConfig);
// 将环境变量转换为 webpack 定义插件需要的格式 // 将环境变量转换为 webpack 定义插件需要的格式
const envKeys = Object.keys(envConfig).reduce((prev, next) => { const envKeys = Object.keys(envConfig).reduce((prev, next) => {
prev[`process.env.${next}`] = JSON.stringify(envConfig[next]); prev[`process.env.${next}`] = JSON.stringify(envConfig[next]);
@ -38,7 +49,16 @@ module.exports = (env, argv) => {
// 确保 NODE_ENV 被正确设置 // 确保 NODE_ENV 被正确设置
envKeys['process.env.NODE_ENV'] = JSON.stringify(nodeEnv); 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 { return {
mode, mode,