一、uniapp項目運行失敗Error: getaddrinfo *.bspapp.com 文件查找失敗uview-ui
????????在運行一個uniapp項目時,出現報錯?文件查找失敗:'uview-ui',Error: getaddrinfo ENOTFOUND 960c0a.bspapp.com。hostname異常,報錯的詳細信息如下:
15:45:43.325 文件查找失敗:'uview-ui' at main.js:16
15:45:43.507 Error: getaddrinfo ENOTFOUND 96f0e00c0a.bspapp.com
15:45:43.507 ? ? at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:107:26) {
15:45:43.507 ? errno: -3008,
15:45:43.507 ? code: 'ENOTFOUND',
15:45:43.507 ? syscall: 'getaddrinfo',
15:45:43.507 ? hostname: '96f0c0a.bspapp.com'
15:45:43.507 }"easycom": {"^u-(.*)": "uview-ui/components/uview-v1/uview-v1.vue"},
? ? ? ? 看其報錯有提到Error: getaddrinfo ENOTFOUND 960c0a.bspapp.com,然后又涉及到了easycom這個配置位置,好像是這個域名請求不了,網上有些提法是把 pages.json 文件中easycom處的代碼路徑進行修改,改成 uview-ui/components/uview-v1/uview-v1.vue。代碼修改前和修改后對比如下:
#修改前
"easycom": {"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"},
#修改后
"easycom": {"^u-(.*)": "uview-ui/components/uview-v1/uview-v1.vue"},
? ? ? ? 但我修改后發現并未解決問題,看報錯內容中還有一行:文件查找失敗uview-ui,說明未找到此全引用文件,而pages.json 中已經配置了該項插件,只是未安裝,只需要使用?npm install uview-ui 即可。其它相關的報錯保存如下:
09:56:55.740 Module build failed (from ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js):
09:56:55.740 SassError: File to import not found or unreadable: uview-ui/theme.scss.
09:56:55.740 ? ? ? ? on line 6 of ../../../../01.zijing/boms-pm-app/uni.scss
09:56:55.740 ? ? ? ? from line 51 of D:\01.zijing\boms-pm-app\uni_modules\uni-swiper-dot\components\uni-swiper-dot\uni-swiper-dot.vue
09:56:55.741 >> @import 'uview-ui/theme.scss';
09:56:55.741 ? ?^
二、推薦一款非常好用的MarkDown軟件 Typora產品
? ? ? ? 最近一直使用 Typora ,的確是挺好用的,不過在使用的時候還是要進行一些相應的處理。首先到其官網下載軟件:Typora 官方中文站 (typoraio.cn)雙擊Typora.exe 安裝完成
? ? ? ? 然后就開始我們的處理流程了,這個不用下載其它的軟件來處理,只需要找到安裝路徑下的文件進行修改,需要找到:Typora\resources\page-dist\static\js\LicenseIndex.180dd4c7.5c394f9a.chunk.js 這個文件。使用記事本或者notepad這種編輯 器打開。ctrl+F定位到下面這行代碼:
e.hasActivated="true"==e.hasActivated
將上面這行替換為
e.hasActivated="true"=="true"
? ? ? 即完成處理,之后你的產品就可以正常使用了。不過這樣每次打開會展現一個很美的紅色彩帶滿窗口飛的窗口。可以把它關閉。使用查找 ctrl+F 定位到:</body></html>
????????將上面的這患字符串替換為如下代碼,即可完成。
</body><script>window.οnlοad=function(){setTimeout(()=>{window.close();},5);}</script></html>
????????如果你還是不爽,要把一些不想看到的文字隱藏,也是可以的。還是按照安裝路徑,找到 resources\locales\zh-Hans.lproj\Panel.json? 文件,在其中查找:"UNREGISTERED" 內容,將其修改替換為:"UNREGISTERED":" ",這樣就清爽了。
三、關于碰到的一個跨域問題
? ? ? ? 每次碰到過多次跨域問題,但都遂心應手的解決了,但這次碰到的了這個問題,還是花費了我一些時間,在請求時顯示的異常問題如下,但在看到問題后總是去排查我是不是哪里的跨域配置設置錯了,后來認真看了一下這個報錯:
Access to fetch at 'https://xxx/api/user' from origin 'http://app.xxx.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values 'http://app.xxx.com, *', but only one is allowed. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
翻譯后內容:
從源 http://app.xxx.com 訪問 https://xxx/api/user 處的訪存已被 CORS 策略阻止:對預檢請求的響應未通過訪問控制檢查:Access-Control-Allow-Origin 標頭包含多個值 http://app.xxx.com, *,但僅允許一個。 讓服務器發送帶有有效值的標頭,或者,如果不透明的響應滿足您的需要,請將請求的模式設置為 no-cors,以在禁用 CORS 的情況下獲取資源。
? ? ? ? 其出錯的原因是在服務器設置了允許跨域,同時又在 Nginx 代理又設置了一次。我的項目是Nginx代理到了后端的 Java 服務,java服務是使用 springboot搭建的項目,很可能是其項目中已經添加了跨域配置,所以解決方法就是,只要移除其一即可解決。于是我把Nginx中的跨域配置刪除,項目就正常了。而在原項目中搜索了一下,果真若依項目里已經自帶的了跨域配置:
/*** 跨域配置*/@Beanpublic CorsFilter corsFilter(){CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);// 設置訪問源地址config.addAllowedOriginPattern("*");// 設置訪問源請求頭config.addAllowedHeader("*");// 設置訪問源請求方法config.addAllowedMethod("*");// 有效期 1800秒config.setMaxAge(1800L);// 添加映射路徑,攔截一切請求UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config);// 返回新的CorsFilterreturn new CorsFilter(source);}