vite.config.js配置-解決跨域問題,以及@vitejs/plugin-vue等報錯

2023-4-7    前端達人

  • 開發(fā)環(huán)境

    在配置的過程中踩了很多坑,還是太菜,有些東西弄不明白什么意思。

    運行項目時的報錯可直接到最下面看vite.config.js文件的注釋

    目前項目用到的模塊并不多,package.json文件如下

    
                                
    1. {
    2. "name": "PsWebV3Abb",
    3. "version": "0.0.0",
    4. "scripts": {
    5. "dev": "vite",
    6. "build": "vite build"
    7. },
    8. "dependencies": {
    9. "@vitejs/plugin-vue": "^1.0.0",
    10. "axios": "^1.2.1",
    11. "element-plus": "^2.2.26",
    12. "vite": "^4.0.3",
    13. "vue": "^3.0.4",
    14. "vue-router": "^4.1.5"
    15. },
    16. "devDependencies": {
    17. "@vue/compiler-sfc": "^3.0.4"
    18. }
    19. }

    其實主要還是這些模塊的版本兼容問題

    vite的版本最開始是1.0.0,后面很多地方搞不下去了才卸載了重裝新的版本

    當然還是建議仔細閱讀一下官方文檔,其實很多重要的點都講的很清楚,只不過是遇到問題的時候才會注意到。官方文檔請移步這里

    下面簡單的說一下這個文件,

    首先是文件的位置,放在其他位置是無效的:

            

    運行vite項目的時候,就會自動解析根目錄下面的這個文件

    我這里的主要目的還是解決項目運行時的跨域問題

    下面是封裝的一個簡單的請求示例,其中service是一個封裝好的axios實例,可以指定一下baseurl,以及請求和響應(yīng)攔截。

    其他的API都可以像這樣通過給getItem添加方法的方式實現(xiàn)

    
                                
    1. import service from '../utils/requests.js'
    2. const getItem = {}
    3. getItem.getppitem = function (params) {
    4. return service.get('api/AutoSimple/getdata', params)
    5. }
    6. export default getItem

    vite.config.js 具體的配置如下

    
                                
    1. import { defineConfig } from 'vite'
    2. import vue from '@vitejs/plugin-vue'
    3. // import eslintPlugin from 'vite-plugin-eslint'
    4. // https://vitejs.dev/config/
    5. // 這個配置文件可能出現(xiàn)的問題:
    6. // 首先是此文件放置的位置
    7. // 1.未安裝 @vitejs/plugin-vue
    8. // 處理方法:npm i @vitejs/plugin-vue@1.0.0
    9. // 由于本項目vite版本1.0限制,只能用了plugin-vue的1.0.0版本,但在運行的時候又導致了問題2,
    10. // 于是直接卸載vite重新安裝最新的3.0.4,這個版本直接install plugin-vue仍然不行,還是要用1.0.0版本
    11. // 2.顯示不存在函數(shù) defineConfig
    12. // 在此之后npm run dev,又報了一個錯:Cannot find module 'node:path'
    13. // 在掘金上看到是和node版本有關(guān),更新后就可以正常運行了
    14. export default defineConfig({
    15. plugins: [
    16. vue()
    17. // 檢查代碼格式
    18. // eslintPlugin({
    19. // include: ['src/**/*.js', 'src/**/*.vue', 'src/*.js', 'src/*.vue']
    20. // })
    21. ],
    22. server: {
    23. // 默認打開的端口和本地
    24. // host: '0.0.0.0',
    25. port: 3000,
    26. https: false, // 不支持https
    27. proxy: {
    28. '/api': {
    29. target: 'http://10.200.20.80/BARCODESERVICE', // 實際請求地址
    30. changeOrigin: true, // 是否跨域
    31. rewrite: (path) => path.replace(/^\/api/, '') // 對什么類的服務(wù)器匹配
    32. },
    33. }
    34. }
    35. })

    生產(chǎn)環(huán)境

    在部署生產(chǎn)環(huán)境時,又遇到了兩個問題:

    1.公共路徑的問題

    客戶環(huán)境是IIS服務(wù)器,為了節(jié)省端口,在部署的時候選擇在同一個網(wǎng)站下添加多個應(yīng)用程序的方式,這就使得在部署時,需要添加公共的基礎(chǔ)路徑,這一點在官方文檔中有詳細的說明。

     

    解決方案:

    在package.json中配置

    
                                
    1. "scripts": {
    2. "dev": "vite",
    3. "build": "vite build --base=/PsWebDand/ "
    4. }

    2.跨域無效的問題

    vite.config.js 中的server的proxy無效,此時跨域的問題需要通過在后端服務(wù)中配置來解決

    IIS服務(wù)器

    
                                
    1. <httpProtocol>
    2. <customHeaders>
    3. <add name="Access-Control-Allow-Headers " value="Content-Type,api_key,Authorization" />
    4. <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
    5. <add name="Access-Control-Allow-Origin" value="*" />
    6. </customHeaders>
    7. </httpProtocol>
    藍藍設(shè)計建立了UI設(shè)計分享群,每天會分享國內(nèi)外的一些優(yōu)秀設(shè)計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
    希望得到建議咨詢、商務(wù)合作,也請與我們聯(lián)系01063334945。 

    分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設(shè)計尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問題,請及時與我們?nèi)〉寐?lián)系,我們立即更正或刪除。 

    藍藍設(shè)計www.bouu.cn )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)、UI設(shè)計公司、界面設(shè)計公司、UI設(shè)計服務(wù)公司、數(shù)據(jù)可視化設(shè)計公司、UI交互設(shè)計公司、高端網(wǎng)站設(shè)計公司、UI咨詢、用戶體驗公司、軟件界面設(shè)計公司。

分享本文至:

日歷

鏈接

個人資料

藍藍設(shè)計的小編 http://www.bouu.cn

存檔