axios 生產環境和開發環境 ip 切換(修改文件配置)


前言

往往在開發過程中,前端axios 連接的ip 地址 是內部服務器,甚至不止一個,可能有多個,那么在封裝axios 工具的時候我們通常用這種方式

const axiosbaseurl = process.env.NODE_ENV==='development' ? 'http://192.168.2.125:8890':'http://192.168.2.126:8890'
const  requsturlone  = process.env.NODE_ENV==='development' ? 'http://192.168.2.125:8891':'http://192.168.2.126:8892'
總之前端一個工程中要連接多少個app 就寫多少行配置,那么開發環境切換到生產環境 后 ,我們需要把內部ip 換成 生產環境ip,所做的就是在源碼里將上述的地址改成需要的ip 編譯部署,個人覺得這樣不太適合。日后的自動化運維部署,並且動源碼總是感覺不太好,於是想將相關的配置文件寫到config.js 中,通過手動修改config.js 中內容直接可以更改url ,這樣不用我每次動源碼再去編譯了

 

正題 :

於是乎我在模塊里引入外部config.js 

import {ip,port} from "../public/static/config.js"

這么看很合理,開發環境中那個,我修改config.js 中的ip  axios 請求url 也相應改變,但是當我 build 后,再在config.js 里修改相關ip port 時 axios 始終以修改前的ip 和port 為地址,根本不變化,這里深層次的原因沒有弄明白,大致總結了下,應該時webpack 在編譯的時候就已經將config.js 內容編譯到代碼中了,當我們在瀏覽器中加載前端js ,   js 並沒有動態的從相關文件中尋找。這里我去看了下 import 和 require 的引用機制,換成 require 引入,require是運行時加載,但還是不行,問題應該是出在了webpack 這里。

換種思路方法;


 

通過在 index.html 中 script 引入靜態文件,將文件內容掛載到window 對象上,那么在我的axios 模塊中就可以通過window 動態的加載config.js 中的內容了。

    <script type="text/JavaScript" src="/static/ipconfig.js"></script>
 
axios 引入 
const ipconfig = window.$ipconfig
解決問題。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM