您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“vue配置代理vue.config.js后不生效如何解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“vue配置代理vue.config.js后不生效如何解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
我的項目使用vue-cli4腳手架搭建的,想要修改webpack配置,需要手動在根目錄下面添加一個vue.config.js文件,會自動識別該文件。
// vue.config.js 配置說明 //官方vue.config.js 參考文檔 https://cli.vuejs.org/zh/config/#css-loaderoptions // 這里只列一部分,具體配置參考文檔 module.exports = { // 部署生產環境和開發環境下的URL。 // 默認情況下,Vue CLI 會假設你的應用是被部署在一個域名的根路徑上 //例如 https://www.my-app.com/。如果應用被部署在一個子路徑上,你就需要用這個選項指定這個子路徑。例如,如果你的應用被部署在 https://www.my-app.com/my-app/,則設置 baseUrl 為 /my-app/。 //baseUrl 從 Vue CLI 3.3 起已棄用,請使用publicPath //baseUrl: process.env.NODE_ENV === "production" ? "./" : "/", publicPath: "./", // outputDir: 在npm run build 或 yarn build 時 ,生成文件的目錄名稱(要和baseUrl的生產環境路徑一致) outputDir: "mycli3", //用于放置生成的靜態資源 (js、css、img、fonts) 的;(項目打包之后,靜態資源會放在這個文件夾下) assetsDir: "assets", //指定生成的 index.html 的輸出路徑 (打包之后,改變系統默認的index.html的文件名) // indexPath: "myIndex.html", //默認情況下,生成的靜態資源在它們的文件名中包含了 hash 以便更好的控制緩存。你可以通過將這個選項設為 false 來關閉文件名哈希。(false的時候就是讓原來的文件名不改變) filenameHashing: false, // lintOnSave:{ type:Boolean default:true } 問你是否使用eslint lintOnSave: true, //如果你想要在生產構建時禁用 eslint-loader,你可以用如下配置 // lintOnSave: process.env.NODE_ENV !== 'production', //是否使用包含運行時編譯器的 Vue 構建版本。設置為 true 后你就可以在 Vue 組件中使用 template 選項了,但是這會讓你的應用額外增加 10kb 左右。(默認false) // runtimeCompiler: false, /** * 如果你不需要生產環境的 source map,可以將其設置為 false 以加速生產環境構建。 * 打包之后發現map文件過大,項目文件體積很大,設置為false就可以不輸出map文件 * map文件的作用在于:項目打包后,代碼都是經過壓縮加密的,如果運行時報錯,輸出的錯誤信息無法準確得知是哪里的代碼報錯。 * 有了map就可以像未加密的代碼一樣,準確的輸出是哪一行哪一列有錯。 * */ productionSourceMap: false, // 它支持webPack-dev-server的所有選項 devServer: { // host: "127.0.0.1", port: 8080, // 端口號 https: false, // https:{type:Boolean} open: true, //配置自動啟動瀏覽器 // proxy: 'http://localhost:4000' // 配置跨域處理,只有一個代理 // 配置多個代理 proxy: { "/api": { target: "http://139.196.42.209:5004/api", // 要訪問的接口域名 //ws: true, // 是否啟用websockets changeOrigin: true, //開啟代理:在本地會創建一個虛擬服務端,然后發送請求的數據,并同時接收請求的數據,這樣服務端和服務端進行數據的交互就不會有跨域問題 pathRewrite: { "^/api": "" //這里理解成用'/api'代替target里面的地址,比如我要調用'http://40.00.100.100:3002/user/add',直接寫'/api/user/add'即可 } } } } }
import axios from 'axios' import { getStore, removeStore } from '../utils' import { Message } from 'element-ui' // 新建axios實例 const instance = axios.create({ baseURL: process.env.VUE_APP_BASE_API, timeout: 3000 }) // 添加請求攔截器 instance.interceptors.request.use(config => { let token = sessionStorage.getItem('token') if (token) { config.headers['token'] = token } return config }, error => { return Promise.reject(error) }) // 添加相應攔截器 instance.interceptors.response.use(response => { let {code, msg} = response.data if (code !== 20000) { Message({ type: 'warning', message: msg || 'error', duration: 3000, showClose: true }) } return response }, error => { return Promise.reject(error) }) export default instance
發送請求時就不需要輸入前面的http://139.196.42.209:5004/api了。
但是我配置完發送請求仍然不是從我本地發送的,請求地址還是http://139.196.42.209:5004/api/user/info,就是說代理沒有配置成功。
原因是我的.env.development文件里面寫的
EVN = 'development' VUE_APP_BASE_API = 'http://139.196.42.209:5004/api'
在配置了本地代理后開發環境也不能寫全路徑,改成
EVN = 'development' VUE_APP_BASE_API = '/api'
此時,本地代理就成功了
讀到這里,這篇“vue配置代理vue.config.js后不生效如何解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。