VITE+VUE3跨域環(huán)境變量配置全過程
一、在項(xiàng)目根目錄下新建以下三個(gè)文件
1) .env (全局默認(rèn)配置環(huán)境)
2) .env.development (開發(fā)環(huán)境, 對(duì)應(yīng)npm run dev)
3) .env.production (生產(chǎn)環(huán)境,對(duì)應(yīng)npm run build)

二、分別在.env.development,.env.production 寫入環(huán)境變量
1) .env.development
// .env.production VITE_APP_TITLE = "線上版本" VITE_BASE_URL = "https://xxx.xxx.xxx(根據(jù)項(xiàng)目實(shí)際情況配置)"
2) .env.development
// .env.development VITE_APP_TITLE = "開發(fā)版本" VITE_BASE_URL = "https://xxx.xxx.xxx(根據(jù)項(xiàng)目實(shí)際情況配置)"
根據(jù)項(xiàng)目實(shí)際情況,加入所需要的變量,變量命名以VITE_為開頭
在vue文件中獲取環(huán)境變量的方法
// .vue文件獲取環(huán)境變量 console.log(import.meta.env) console.log(import.meta.env.VITE_APP_TITLE) console.log(import.meta.env.VITE_BASE_URL)
在vite.config.ts中獲取環(huán)境變量的方法
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import styleImport from 'vite-plugin-style-import';
// 如果編輯器提示 path 模塊找不到,則可以安裝一下 @types/node -> npm i @types/node -D
import { resolve } from 'path'
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, __dirname)
console.log(env.VITE_APP_TITLE, env.VITE_BASE_URL)
return {
plugins: [vue(),styleImport({
libs: [
{
libraryName: 'vant',
esModule: true,
resolveStyle: (name) => `vant/es/${name}/style`,
},
],
}),],
resolve: {
alias: {
'@': resolve(__dirname, 'src') // 設(shè)置 `@` 指向 `src` 目錄
}
},
base: './', // 設(shè)置打包路徑
server: {
port: 4000, // 設(shè)置服務(wù)啟動(dòng)端口號(hào)
open: true, // 設(shè)置服務(wù)啟動(dòng)時(shí)是否自動(dòng)打開瀏覽器
cors: true, // 允許跨域
// 設(shè)置代理,根據(jù)我們項(xiàng)目實(shí)際情況配置
proxy: {
'/api': {
target: env.VITE_BASE_URL, // 環(huán)境變量
changeOrigin: true,
secure: false,
rewrite: (path) => path.replace('/api/', '')
}
}
}
}
})
三、線上環(huán)境(npm run build以后)跨域問題處理
在axios中,判斷當(dāng)前環(huán)境后再請(qǐng)求前配置好baseUrl
import axios from 'axios'
var http = axios.create({
timeout: 1000 * 20,
baseURL: import.meta.env.DEV? '': import.meta.env.VITE_BASE_URL
})
// 請(qǐng)求響應(yīng)器
http.interceptors.request.use(
(config) => {
return config
},
function (error) {
// 返回錯(cuò)誤信息
return Promise.reject(error)
}
)
http.interceptors.response.use(
(response) => {
return response
},
(error) => {
return Promise.reject(error.response)
}
)
export default http
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue如何使用百度地圖自定義信息窗口InfoWindow的樣式
這篇文章主要介紹了Vue如何使用百度地圖自定義信息窗口InfoWindow的樣式問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
詳解在vue-cli項(xiàng)目中使用mockjs(請(qǐng)求數(shù)據(jù)刪除數(shù)據(jù))
本篇文章主要介紹了在vue-cli項(xiàng)目中使用mockjs(請(qǐng)求數(shù)據(jù)刪除數(shù)據(jù)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
手把手教你如何運(yùn)行一個(gè)前端uniapp項(xiàng)目
這篇文章主要介紹了如何設(shè)置和運(yùn)行一個(gè)基于uni-app框架的項(xiàng)目,包括安裝必要的軟件、克隆項(xiàng)目并安裝依賴,以及如何使用HBuilderX進(jìn)行項(xiàng)目運(yùn)行和調(diào)試,需要的朋友可以參考下2025-01-01
使用Vue動(dòng)態(tài)生成form表單的實(shí)例代碼
這篇文章主要介紹了使用Vue動(dòng)態(tài)生成form表單的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04
解決vue項(xiàng)目使用font-awesome,build后路徑的問題
今天小編就為大家分享一篇解決vue項(xiàng)目使用font-awesome,build后路徑的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
使用vite創(chuàng)建vue3項(xiàng)目的詳細(xì)圖文教程
創(chuàng)建Vue3項(xiàng)目有兩種常見的方式,一種是想vue2版本一樣使用腳手架工具創(chuàng)建,創(chuàng)建vue3項(xiàng)目的腳手架必須是4版本以上的,另一種方法就是使用vite創(chuàng)建,這篇文章主要給大家介紹了關(guān)于如何使用vite創(chuàng)建vue3項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-11-11
vue開發(fā)中如何在js文件里使用pinia和組件同步
在JavaScript文件中封裝涉及到使用Pinia的方法時(shí),發(fā)現(xiàn)Pinia和組件內(nèi)容并不同步,二者的狀態(tài)是獨(dú)立的,解決辦法是,在新建對(duì)象的時(shí)候,將Pinia作為參數(shù)傳入,本文給大家介紹vue開發(fā)中如何在js文件里使用pinia和組件同步,感興趣的朋友一起看看吧2024-10-10

