umi项目 (或vuecli项目) 自定义环境变量配置
1. config.js 配置文件里的 console 是打印到项目控制台内的,说明这里还是服务器侧在跑的代码2. 项目内import了ct里暴露的变量,执行process.env.REGION,打印在浏览器端,说明这是浏览器跑的代码,所以取不到process.env。3. 后台使用的东西前端用不到,不应该放在ct里呀大哥4. vue取到环境变量是在配置文件里(服务端侧)取到process.env
umi项目自定义环境变量
1. 启动或打包项目时传入变量。这里我们传入自定义变量 REGION,值为 'th'
REGION=th umi dev
2. config.js 内使用 define 透传 (文档:https://umijs.org/config#define )
export default {
define: { REGION:process.env.REGION }
}
3. 全局使用
console.log(REGION)
vue项目自定义环境变量
1. 启动或打包项目时传入变量。这里我们传入自定义变量 REGION,值为 'th'
REGION=th vue-cli-service serve
2. 在 vue.config.js 里重命名变量名实现穿透。原因是 vuecli 为了干净,限制仅嵌入VUE_APP_开头的变量
(文档:https://cli.vuejs.org/zh/guide/mode-and-env.html )
process.env.VUE_APP_REGION = process.env.REGION
3. 全局使用
console.log( process.env.VUE_APP_REGION )
或者
1. 在启动或打包时,直接传入以VUE_APP_开头的变量
VUE_APP_REGION=th vue-cli-service serve
2. 就可以直接全局使用
console.log( process.env.VUE_APP_REGION )
原理:
1. umi 的 config.js 或者 vue-cli 的 vue.config.js 配置文件里的 console 是打印到项目控制台内的,说明配置js文件是跑在服务器侧的代码。并且只有在服务器侧运行的代码才能取到原版process.env。打包完成后放到浏览器执行的代码取不到。
2. 项目内的 utils 等文件 import 的变量如果涉及执行 process.env.REGION ,console 是会发现打印在浏览器端,说明这是在浏览器环境下跑的代码,必然取不到process.env,只能让服务器端那边打包的时候编译成个常量,透传过来。
3. 后端node因为全部都是服务器代码,没有浏览器端代码之分,所以任意位置都可以取process.env。
更多推荐
所有评论(0)