/**
 * ENV 的封装
 * 由于uniapp 无法设置.env等打包属性，实现线上，线下多版本配置属性的无缝切换。 
 * process.env.NODE_ENV 将在打包环境通过编译器进行替换， 线上打包后无法获取到 process对象。 所以将配置属性统一封装到appConfig中。 
 * 
 * 环境地址环境枚举详见： appConfig.js 
 *
 * @author terrfly
 * @site https://www.jeequan.com
 * @date 2021/12/16 17:57
 */
import appConfig from '../config/appConfig.js';

// uni-app 暂时不支持动态import（导包app报错）, 需要将所有的env全部导入 = = 、
import development from './env.development.js';
import test from './env.test.js';
import demo from './env.demo.js';
import production from './env.production.js';
//import production2 from './env.production2.js'; //当生存环境上线后需要删除该配置。  仅仅为了上线审核（目前还没有生产地址）

const allEnvMap = {
	development: development,
	test: test,
	demo: demo,
	production: production,
}

// 获取当前环境变量  
// 在 HBuilderX 中，点击“运行”编译出来的代码是开发环境，点击“发行”编译出来的代码是生产环境 
// (  https://uniapp.dcloud.io/worktile/running-env.html#%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E5%92%8C%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83 )
const processEnv = process.env.NODE_ENV


// 改变env环境
function changeEnv(envMode){
	
	appConfig.env = allEnvMap[envMode || processEnv]

	// // 动态导包的方式：设置全局env配置项目 : 当参数不存在， 那么获取node环境
	// import(`./env.${envMode || processEnv}.js`).then(module => {
	// 	appConfig.env = module.default
	// }).catch(() => {
	// 	appConfig.env = production //当出现错误， 比如本地没有复制dev文件时， 默认使用生产环境
	// })
}

export default { changeEnv: changeEnv }


