iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

後端工程師自我練習,使用Node.js來做後端server系列 第 17

[Day-17] Vue.js [直接使用Vue cli開始vue 專案(三) webpack設定proxyTable ]

  • 分享至 

  • xImage
  •  

[ Day 17]

說明:
d16說到為了解決CORS問題,使用代理後端呼叫API是個比較好的做法,但是前端專案在正式部屬打包成static檔案,再掛到server的nginx上,由nginx負責做代理的事情。

但是開發環境一般我們不會去掛nginx,而是由webpack-dev-server這樣的工具起server測試,但是這就會讓端口不一致,後端server和webpack-dev-server是兩個不同程式,Port會不一樣。還是會有CORS問題。

所以為了解決這問題,使用webpack的proxyTable是必要的,而且配置一次後,在呼叫API的地方不用再重複配置。

一、修改webpack config裡的index.js
如果是由vue-cli產生的webpack專案,在config裡有個index.js檔案,
可以配置proxyTable,原本預設為空。

proxyTable: {
      '/api': {
        target: "http://localhost:3310",  //node express api的url位置
        changeOrigin: true,
        pathRewrite: {
            '^/api': 'api'
        }
      }
    }

這裡將localhost:8080這個位置(port也是可配置)的/api位置,指向localhost:3310的後端server。

二、request 測試

<template>
  <div>
    <button @click="getData">拿資料</button>
    <div>取回的資料:{{userData}}</div>
  </div>
</template>

<script>
import chalk from 'chalk'
import request from 'request'

export default {
  data(){
    return { 
      userData:''
    }
  },
  methods:{
    getData() {
      var url = 'http://localhost:8080/api/user'
      request.get(url, (err, res, body) => {
        this.userData = body
      })
    }
  }
}
</script>

<style>

</style>

示範在vue組件中呼叫localhost:8080/api/user這個url,此時的設定已經導向localhost:3310/api/user這個網址了。
這裡後端使用的程式是day7的express範例。

https://ithelp.ithome.com.tw/upload/images/20200930/201109112JNv60recp.png
這樣就解決CORS問題。

參考資料:https://panjiachen.github.io/vue-element-admin-site/zh/guide/advanced/cors.html

[Day17結束]


上一篇
[Day-16] Vue.js [直接使用Vue cli開始vue 專案(二) VueCli踩坑記錄]
下一篇
[Day-18] Vue.js [直接使用Vue cli開始vue 專案(四) 實作查詢/新增]
系列文
後端工程師自我練習,使用Node.js來做後端server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言