<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

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

          2023-4-7    前端達人

          • 開發環境

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

            運行項目時的報錯可直接到最下面看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,以及請求和響應攔截。

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

            
                                        
            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. // 這個配置文件可能出現的問題:
            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.顯示不存在函數 defineConfig
            12. // 在此之后npm run dev,又報了一個錯:Cannot find module 'node:path'
            13. // 在掘金上看到是和node版本有關,更新后就可以正常運行了
            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/, '') // 對什么類的服務器匹配
            32. },
            33. }
            34. }
            35. })

            生產環境

            在部署生產環境時,又遇到了兩個問題:

            1.公共路徑的問題

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

             

            解決方案:

            在package.json中配置

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

            2.跨域無效的問題

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

            IIS服務器

            
                                        
            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>
            藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
            希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

            分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

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

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合