搜尋
首頁web前端js教程React Native有關跨域資源出錯問題
React Native有關跨域資源出錯問題Jun 11, 2018 pm 03:39 PM
nativereact斷點調試真機跨域

下面我就為大家分享一篇React Native 真機斷點調試跨域資源加載出錯問題的解決方法,具有很好的參考價值,希望對大家有所幫助

#寫在前面

閒來無事,折騰了一下React Native,相較之前,開發體驗好了不少。但在真機斷點調試那裡遇到了跨域資源加載出錯的問題,一番探索總算解決,目測是RN新版本調試服務的bug。

遇到類似問題的同學應該不少,這裡做下記錄,有需要的可以參考下。

如何斷點偵錯

首先,在真機上載入執行RN應用程式(過程略)。

然後,搖晃手機,彈出開發選單,選擇「Debug JS Remotely」。

chrome會自動開啟偵錯介面,位址是 http://localhost:8081/debugger-ui/ 。打開控制台,找到想要調試的文件,加斷點,搞定。

問題:跨網域資源載入出錯

#理想情況下,上述步驟後,就可以愉快地斷點調試了。但實際情況並沒有這麼順利,按照 官方指引 修改了host後,問題依然存在。

在控制台看到的錯誤訊息如圖所示,跨網域資源載入出錯。 192.168.3.126 是本機內部網路的ip,而出錯資源的網域是 192.168.3.126.xip.io。

在未對RN有深入了解的情況下,想到兩種思路,後文會分別講述細節。

讓載入出錯的資源,跟偵錯頁面變成同源的

讓偵錯服務支援資源跨網域載入

解決方法一:替換主機名稱

將localhost替換成192.168.3.126.xip.io,也就是說,我們透過http://192.168.3.126.xip.io:8081/debugger-ui / 來存取調試介面。

調試介面正常訪問,資源加載正常,done。

192.168.3.126.xip.io 這個主機名稱看著有點奇怪,後文會進一步介紹背後的原理。

解決方法二:CORS

在github issue《CORS issue with JS Remote Debugging when using xip.io》裡,有開發者反饋了同樣的錯誤。

他是這樣解決的:

找到node_modules/metro模組,修改Server/index.js、index.js.flow文件,在_processDeltaRequest方法裡加上下面程式碼。

mres.setHeader("Access-Control-Allow-Origin", "*");

這個方法不推薦,不過如果急著調試的話也不妨試試。

192.168.3.126.xip.io是什麼東東

看到這個主機名不少同學可能一臉懵逼,一個似乎不存在的主機名稱怎麼可以存取成功。

在控制台下ping了一下回傳的是 192.168.3.126 這個ip。

其實很簡單,xip.io是個特殊的域名,當你查詢xxx.xip.io這個域名對應的ip位址時,它會直接回傳xxx。

範例:筆者筆記本的內部網路ip位址是 192.168.3.126,當我 造訪 192.168.3.126.xip.io,DNS查詢回傳的ip位址就是 192.168.3.126。

它的原理也很簡單,xip.io 的持有者在公網自建了DNS解析服務,當用戶發起 xxx.xip.io 的DNS查詢時,它會直接把 xxx 回傳。

寫在後面

前面提到的跨域解決方案,其實都不盡如人意,如有更好的方案,請告訴筆者,謝謝。

參考連結

http://xip.io/

CORS issue with JS Remote Debugging when using xip. io

Debugging on a device with Chrome Developer Tools

#上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

ES6 迭代器和for.of循環(詳細教學)

在vue中使用better-scroll捲動外掛程式

在VUE UEditor中如何實作單一圖片跨網域上傳功能

在vue中有關watch偵測到不到物件屬性的變化方面的問題

veloticy-ui實作文字動畫效果

js中let和var定義變數的差別有哪些?

VUE 個人總結(碰到的問題)

#Nuxt.js Vue服務端渲染摸索

以上是React Native有關跨域資源出錯問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
react中canvas的用法是什么react中canvas的用法是什么Apr 27, 2022 pm 03:12 PM

在react中,canvas用于绘制各种图表、动画等;可以利用“react-konva”插件使用canvas,该插件是一个canvas第三方库,用于使用React操作canvas绘制复杂的画布图形,并提供了元素的事件机制和拖放操作的支持。

react中antd和dva是什么意思react中antd和dva是什么意思Apr 21, 2022 pm 03:25 PM

在react中,antd是基于Ant Design的React UI组件库,主要用于研发企业级中后台产品;dva是一个基于redux和“redux-saga”的数据流方案,内置了“react-router”和fetch,可理解为应用框架。

React是双向数据流吗React是双向数据流吗Apr 21, 2022 am 11:18 AM

React不是双向数据流,而是单向数据流。单向数据流是指数据在某个节点被改动后,只会影响一个方向上的其他节点;React中的表现就是数据主要通过props从父节点传递到子节点,若父级的某个props改变了,React会重渲染所有子节点。

react中为什么使用nodereact中为什么使用nodeApr 21, 2022 am 10:34 AM

因为在react中需要利用到webpack,而webpack依赖nodejs;webpack是一个模块打包机,在执行打包压缩的时候是依赖nodejs的,没有nodejs就不能使用webpack,所以react需要使用nodejs。

react中forceupdate的用法是什么react中forceupdate的用法是什么Apr 19, 2022 pm 12:03 PM

在react中,forceupdate()用于强制使组件跳过shouldComponentUpdate(),直接调用render(),可以触发组件的正常生命周期方法,语法为“component.forceUpdate(callback)”。

react是组件化开发吗react是组件化开发吗Apr 22, 2022 am 10:44 AM

react是组件化开发;组件化是React的核心思想,可以开发出一个个独立可复用的小组件来构造应用,任何的应用都会被抽象成一颗组件树,组件化开发也就是将一个页面拆分成一个个小的功能模块,每个功能完成自己这部分独立功能。

react与vue的虚拟dom有什么区别react与vue的虚拟dom有什么区别Apr 22, 2022 am 11:11 AM

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。

react和reactdom有什么区别react和reactdom有什么区别Apr 27, 2022 am 10:26 AM

react和reactdom的区别是:ReactDom只做和浏览器或DOM相关的操作,例如“ReactDOM.findDOMNode()”操作;而react负责除浏览器和DOM以外的相关操作,ReactDom是React的一部分。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具