vue中生产环境和开发环境判断

本文介绍了一种基于环境变量配置不同环境URL的方法,并提供了一个具体的示例,展示如何根据当前运行环境选择对应的开发或测试环境URL。
const urlDev = 'http://dev.womaoapp.com'
const urlQa = 'http://qa.oss.womaoapp.com'
var url = ''
process.env.NODE_ENV === 'development' ? url = urlDev : url = urlQa
const excelUrl = url + '/fwas.message.admin/sys/fileDown/excel?channelType=1' // 我茂消息发送--获取excel示例
export { excelUrl }
<think>我们正在讨论如何在Vue项目中区分开发环境生产环境,并根据环境配置不同的设置(如API域名等)。根据引用[1][2][3][4],主要方法是通过环境变量文件(.env)来配置,并使用process.env来读取这些变量。步骤:1.在项目根目录下创建环境变量文件,例如:-.env.development#开发环境-.env.production#生产环境-.env.staging#预发布环境(或其他自定义环境)2.在环境变量文件中,定义以`VUE_APP_`开头的变量(VueCLI的要求),例如:.env.development文件内容:VUE_APP_ENV='development'VUE_APP_API_BASE_URL='https://dev.example.com/api'.env.production文件内容:VUE_APP_ENV='production'VUE_APP_API_BASE_URL='https://api.example.com/api'3.在代码中使用process.env.VUE_APP_XXX来获取环境变量。注意:在VueCLI中,环境变量是静态嵌入的,意味着在构建时就已经确定。运行时的环境变量可以在public目录下的文件中使用,但在应用代码中(如JavaScript)不能动态改变。4.在package.json中设置命令:"scripts":{"serve":"vue-cli-serviceserve",#默认使用.env.development"build":"vue-cli-servicebuild",#默认使用.env.production"build:staging":"vue-cli-servicebuild--modestaging"#使用.env.staging}5.关于跨域问题:在开发环境,可以在vue.config.js中配置代理(proxy)解决跨域(引用[4])。生产环境则需要通过服务器配置(如Nginx反向代理)。6.在vue.config.js中,可以使用环境变量来动态配置代理目标(如果需要):constproxyTargetMap={development:'http://localhost:8080',test:'http://test.example.com',production:'http://api.example.com'}module.exports={devServer:{proxy:{'/api':{target:proxyTargetMap[process.env.VUE_APP_ENV]||'http://localhost:8080',changeOrigin:true,pathRewrite:{'^/api':''}}}}}但是注意,在开发环境中,我们通常使用相对路径(如/api),然后通过代理映射到目标地址。而生产环境,我们一般直接使用配置的域名(所以代理是无效的,生产环境需要自己的服务器配置)。7.另外,引用[3]提到了使用cross-env来设置环境变量,但注意在VueCLI项目中,模式(mode)已经提供了环境变量的设置,所以我们一般不需要使用cross-env。总结:使用VueCLI的环境变量文件是最佳实践,可以方便地管理不同环境下的配置。下面详细说明如何配置使用的步骤:</think> ### Vue 项目区分开发环境生产环境配置指南 在 Vue 项目中区分开发环境生产环境,主要通过 **环境变量文件**(`.env`) **构建命令模式** 实现。以下是具体配置方法(以 Vue CLI 为例): --- #### 1. **创建环境变量文件** 在项目根目录创建以下文件(名称固定): ```bash .env.development # 开发环境 .env.production # 生产环境 .env.staging # 预发布环境(可选) ``` 文件内容示例: ```bash # .env.development VUE_APP_ENV = 'development' VUE_APP_API_BASE_URL = 'https://dev-api.example.com' VUE_APP_DEBUG_MODE = true # .env.production VUE_APP_ENV = 'production' VUE_APP_API_BASE_URL = 'https://api.example.com' VUE_APP_DEBUG_MODE = false ``` **注意**: - 变量名必须以 `VUE_APP_` 开头(Vue CLI 规范)[^1][^2] - 变量值需用引号包裹(如 `'production'`) --- #### 2. **配置 package.json 构建命令** 修改 `package.json` 的 `scripts` 字段,指定环境模式: ```json "scripts": { "serve": "vue-cli-service serve --mode development", // 默认开发环境 "build": "vue-cli-service build --mode production", // 生产环境 "build:staging": "vue-cli-service build --mode staging" // 预发布环境 } ``` --- #### 3. **在代码中读取环境变量** 通过 `process.env.VUE_APP_XXX` 获取配置值: ```javascript // api.js 示例 const baseURL = process.env.VUE_APP_API_BASE_URL; // 动态配置 Axios const api = axios.create({ baseURL, timeout: process.env.VUE_APP_ENV === 'development' ? 5000 : 10000 }); ``` --- #### 4. **解决开发环境跨域问题** 在 `vue.config.js` 中配置代理(仅开发环境生效)[^4]: ```javascript module.exports = { devServer: { proxy: { '/api': { target: process.env.VUE_APP_API_BASE_URL, changeOrigin: true, pathRewrite: { '^/api': '' } } } } }; ``` --- #### 5. **构建时环境区分逻辑** 在配置文件中动态判断环境(如 `config.js`): ```javascript // config.js let config = {}; if (process.env.VUE_APP_ENV === 'development') { config = { debug: true, sourceMap: 'inline' }; } else { config = { debug: false, sourceMap: false }; } export default config; ``` --- #### 关键注意事项: 1. **变量生效时机**:环境变量在**构建时**注入,运行时不支持动态修改 2. **敏感信息**:避免在 `.env` 中存储密码等敏感数据(使用后端接口获取) 3. **优先级**: ``` .env.local > .env.[mode] > .env ``` 4. **浏览器访问**:`process.env` 仅在构建后的代码中可见,浏览器无法直接访问 > 通过此方案,项目在不同环境自动切换配置,实现**开发调试无跨域、生产部署自动优化**的目标[^1][^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值