zoukankan      html  css  js  c++  java
  • webpack打包VUE项目读取外部配置文件,灵活配置域名

    参考方案一
    作为一个兼职前端和运维的java程序员,今天我司测试人员提出了一个需求,当后台服务地址ip地址改变后,webpack打包的VUE项目得更改地址重新打包,太麻烦了,最好可以读取外部配置文件的域名,灵活部署。

      这不是在刁难我胖虎吗,后来我在网上查资料,发现有解决思路,具体详细的解决方案没有,在和前端同事研究后,解决了该问题,现记录一下,供大家遇到此问题时参考。

      我司的前端项目我是用nginx部署的,原配置文件prod.env.js代码如下:

    module.exports = {
      NODE_ENV: '"production"',
      ENV_CONFIG: '"prod"',
      BASE_API: '"http://192.168.1.24:8081"'
    }

    在打包成dist文件夹后,确实无法改变地址,解决思路是在VUE项目的static文件夹下创建config.json文件,里面配置后台地址:

    "http://192.168.1.21:8081"

    然后就可以在prod.env.js中使用这个地址:

    var URL = require('../static/config.json');
    console.log(URL)
    module.exports = {
      NODE_ENV: '"production"',
      ENV_CONFIG: '"prod"',
      BASE_API: "'"+URL+"'"
    }

    通过require引入,这里踩坑了一次,这个URL读出来不是字符串,如果在项目中别的地方引用,如:

    baseUrl: process.env.BASE_API

    引起报错,有两个:符号,页面编译不出来,要把URL变成字符串使用,到此这个需求解决。

    参考方案二

    (四)vue.js 外部配置文件(参考)

    前文我们已经安装了axios,现在我们来配置外部文件

    1.在vue项目中的static目录下新增文件config.json

    {
        "apiUrl": "http://127.0.0.1:30010/support/"
    }

    2.在main.js中引入axios,并定义一个全局函数来获取配置文件

    import axios from 'axios'
     
    Vue.prototype.$http = axios
    Vue.prototype.getConfig = function () {
      this.$http.get('./static/config.json').then(res => {
        Vue.prototype.apiUrl = res.data.apiUrl
      }).catch(err => {
        console.log(err)
      })
    }

    3.在app.vue里面调用getConfig()获取ApiUrl,使用时直接使用 this.ApiUrl+'/api/‘ 进行调用

    //调用getConfig()获取ApiUrl
    mounted() {
      this.getConfig();
    }

    4.输入npm run build进行打包,查看dist文件夹下的config.json文件,实现外部配置

  • 相关阅读:
    Hadoop Yarn 框架原理及运作机制及与MapReduce比较
    模型驱动与属性驱动区别
    spark伪分布式的安装
    大数据集群的常见问题
    linux常用命令
    大数据集群ssh登录其他机器失败 RSA host key for zb03 has changed and you have requested strict checking. Host key verification failed.
    Python 地点转化为经纬度
    Hbase原理、基本概念、基本架构
    struts2的java.lang.NoSuchMethodException错误
    抽象工厂
  • 原文地址:https://www.cnblogs.com/mmzuo-798/p/15227114.html
Copyright © 2011-2022 走看看