[英]React native different behaviour between debug mode and normal mode react-native“: ”0.60.4
[英]React native different behaviour between debug mode and normal mode
嗨,我有一個非常復雜的問題。 所以我在github上為這個問題創建了一個新的repo。 所以你可以克隆它,看看問題是什么。
https://github.com/guitar9/hafas-client-example
我在這個項目中使用https://github.com/public-transport/hafas-client獲取火車和火車站的信息。
client.journeys(münchenHbf, münchenPassing)
.then((response)=>{
console.log('===============response=====================');
console.log(response);
console.log('====================================');
})
.catch(console.error)
請求在
node_modules/hafas-client/lib/request
問題是在調試模式下一切正常(搖動手機並啟動遠程JS調試),但當我停止JS調試時,我得到錯誤'PARSE'。
所以我在request.js中查找並在調試模式下注銷請求和響應,而不是在調試模式下。
請求調試模式
{
"method": "post",
"body": "{\"lang\":\"en\",\"svcReqL\":[{\"cfg\":{\"polyEnc\":\"GPA\"},\"meth\":\"TripSearch\",\"req\":{\"outDate\":\"20180614\",\"outTime\":\"174837\",\"ctxScr\":null,\"getPasslist\":false,\"maxChg\":5,\"minChgTime\":0,\"depLocL\":[{\"lid\":\"A=1@L=008000261@\"}],\"viaLocL\":null,\"arrLocL\":[{\"lid\":\"A=1@L=008004158@\"}],\"jnyFltrL\":[{\"type\":\"PROD\",\"mode\":\"INC\",\"value\":\"1023\"},{\"type\":\"META\",\"mode\":\"INC\",\"meta\":\"notBarrierfree\"}],\"getTariff\":false,\"outFrwd\":true,\"getPT\":true,\"getIV\":false,\"getPolyline\":false,\"numF\":5,\"trfReq\":{\"jnyCl\":2,\"tvlrProf\":[{\"type\":\"E\",\"redtnCard\":null}],\"cType\":\"PK\"}}}],\"client\":{\"id\":\"DB\",\"v\":\"16040000\",\"type\":\"IPH\",\"name\":\"DB Navigator\"},\"ext\":\"DB.R15.12.a\",\"ver\":\"1.16\",\"auth\":{\"type\":\"AID\",\"aid\":\"n91dB8Z77MLdoR0K\"}}",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"user-agent": "https://github.com/public-transport/hafas-client"
},
"query": {
"checksum": "6af3b74db20e14c7f94012e3de55dce6"
}
}
響應調試模式
所有信息。 一切都好。
請求不在調試模式下
{
"method": "post",
"body": "{\"lang\":\"en\",\"svcReqL\":[{\"cfg\":{\"polyEnc\":\"GPA\"},\"meth\":\"TripSearch\",\"req\":{\"outDate\":\"Invalid DateTime\",\"outTime\":\"Invalid DateTime\",\"ctxScr\":null,\"getPasslist\":false,\"maxChg\":5,\"minChgTime\":0,\"depLocL\":[{\"lid\":\"A=1@L=008000261@\"}],\"viaLocL\":null,\"arrLocL\":[{\"lid\":\"A=1@L=008004158@\"}],\"jnyFltrL\":[{\"type\":\"PROD\",\"mode\":\"INC\",\"value\":\"1023\"},{\"type\":\"META\",\"mode\":\"INC\",\"meta\":\"notBarrierfree\"}],\"getTariff\":false,\"outFrwd\":true,\"getPT\":true,\"getIV\":false,\"getPolyline\":false,\"numF\":5,\"trfReq\":{\"jnyCl\":2,\"tvlrProf\":[{\"type\":\"E\",\"redtnCard\":null}],\"cType\":\"PK\"}}}],\"client\":{\"id\":\"DB\",\"v\":\"16040000\",\"type\":\"IPH\",\"name\":\"DB Navigator\"},\"ext\":\"DB.R15.12.a\",\"ver\":\"1.16\",\"auth\":{\"type\":\"AID\",\"aid\":\"n91dB8Z77MLdoR0K\"}}",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json",
"user-agent": "https://github.com/public-transport/hafas-client"
},
"query": {
"checksum": "0d8186da7b06f9cc094075a2a6e21b00"
}
}
響應不在調試模式下
{
"ver": "1.16",
"ext": "DB.R15.12.a",
"lang": "eng",
"id": "",
"err": "PARSE",
"svcResL": []
}
我已經比較了這些要求。 在這里你可以看到兩個請求之間的區別。 https://www.diffnow.com/?report=pvuq7問題是outDate,outTime和checksum。 有人可以幫幫我嗎?
問題是的用法力信通庫 hafas客戶端庫中。 您將看到repo中提供的代碼在iOS和Android上運行正常,只啟用了遠程調試。 為什么?
啟用遠程調試后,代碼不會在手機中運行,而是在Chrome瀏覽器的V8引擎中運行。 當禁用遠程調試時,代碼會在您的手機上運行,在Android的情況下,它在2014年末運行的JavaScriptCore(JSC)引擎上運行,該引擎使用自定義設置進行編譯,可能會產生不同的結果。
正如luxon文檔指出的那樣 ,對android上的本機反應的支持是有限的。
在iOS上,react native使用OS提供的JSC,其中還包括intl功能。 android上的JSC沒有int支持的原因是JSC與apk捆綁在一起,並且使用intl支持編譯它會使apk大小增加幾MB。
通過一些cutomizations(分叉hafas客戶端)和解決日期問題,我相信你應該能夠解決這個問題。 您也可以使用它,但要注意您可能會遇到其他可能難以獲得幫助的問題(有一段時間, Expo客戶端過去常常使用從此repo編譯的JSC,但他們不得不停止使用自定義構建因為一些問題)。
或者,您可以嘗試使用intl polyfill
我是怎么知道的? 在這里你會看到錯誤對象包含一堆額外的信息。 當您記錄錯誤時,您只是獲取description
字段,但是如果您記錄request
字段,您將看到它包含"outDate": "Invalid DateTime"
。 它就是!
hafas-client
作者在這里。 發布作為可見性的答案,因為我沒有評論的聲譽。
正如我在https://github.com/public-transport/hafas-client/issues/56#issuecomment-399915315中記錄的那樣, 我設法使用了hafas-client@3.0.0-alpha.9
。在我添加了node-libs-react-native
填充程序后,react-native中的框。 請試試這個。
當然也有可能是涉及到另一個問題, luxon
(如在討論https://stackoverflow.com/a/51005700 ),但沒有起碼查詢數據EPARSE
錯誤或者未解碼的響應有效載荷,以不相關luxon
,顯然解決了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.