项目打包时,process.env去除的可能性方案

背景: 测试同学反映:为什么我测试环境和生产环境打出的包最后代码不同?

期望:测试环境和生产环境打出的包相同,甚至说,我最好测试环境和生产环境共用一个包。

问题原因分析:

1、代码中含有使用process.env.NODE_ENV判断所处环境执行不同业务的代码。

2、代码api请求时,有process.env.[API],如VUE_APP_ROOTPATH,使用process.env. VUE_APP_ROOTPATH来去请求不同的接口。 以上两种原因都会导致测试和生产最终的代码不同。

Tips: 每个小伙伴可能的原因都不太相同,但总的来说,就是依据打包时不同的环境,让代码执行了不同的操作)

解决方案:
一、配置:

我们发现在业务代码包括main.js中,均可以访问到window属性,我们可以借助window.location.hostname获取的ip地址来判断当前所处环境。 我们通过在config.js中配置,所有访问地址的枚举值,来反映对应ip地址和环境的映射。

确定获取到当前环境后,我们再通过当前环境,配置好不同环境需要调取的接口ip地址,来通过当前环境,去获取当前接口需要调用的ipd接口地址。

二、挂载和实施:

将获取到当前的环境,和所需要调取接口的ip地址挂载到window上。 此时在业务代码中使用时: 原先判断当前环境环境的process.env.NODE_env将被window.Basedb_performance_env取代。 原先调取对应环境的ip接口地址,  process.env.vue_app_rootpath 将被 window.basedb_performance.vue_app_root_path取代。

问题:

vue.config.js中,没有window,此时一些针对环境变量的处理。

在tm和performance中,因为cdn的原因,需要访问不同ip(根据环境判断)地址下的cdn包。

1、如果去除了build时配置的环境参数,那么将在vue.config.js中将只剩下两个环境。 本地环境和打包环境。 在nginx配置过cdn代理之后,各环境会访问自己ip地址对应的cdn包。 本地环境访问localhost的域名不行,需要让其访问到 https://utest.iflytek.com/cdn地址下的cdn。 在打包环境通过nginx转发他就可以访问到自己ip对应的cdn内容了。

2、如果没有去除build时配置的环境参数 保留dev和test/prod配置 最多有三个环境,本地环境,开发环境,测试/生产环境。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值