Javascript 在调试模式和正常模式之间反应本机不同行为
嗨,我有一个非常复杂的问题。所以我在github为这个问题创建了一个新的回购协议。所以你可以克隆它,看看问题出在哪里 我在这个项目中使用,以获得火车和火车站的信息Javascript 在调试模式和正常模式之间反应本机不同行为,javascript,android,reactjs,react-native,request,Javascript,Android,Reactjs,React Native,Request,嗨,我有一个非常复杂的问题。所以我在github为这个问题创建了一个新的回购协议。所以你可以克隆它,看看问题出在哪里 我在这个项目中使用,以获得火车和火车站的信息 client.journeys(münchenHbf, münchenPassing) .then((response)=>{ console.log('===============response====================='); console.log(response); console.lo
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": []
}
响应调试模式
{
"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": []
}
所有信息。一切都好
请求未处于调试模式
{
"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": []
}
响应未处于调试模式
{
"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": []
}
我比较了这些要求。在这里,您可以看到这两个请求之间的差异。
问题是过期、超时和校验和。有人能帮我吗?问题在于hafas客户端库中的使用。您将看到,repo中提供的代码仅在启用远程调试的情况下,在iOS和android上运行良好。为什么? 启用远程调试后,代码不会在手机中运行,而是在chrome浏览器的V8引擎中运行。当远程调试被禁用时,代码会在您的手机上运行,在android的情况下,它会在2014年末的JavaScriptCore(JSC)引擎上运行,该引擎使用react native的自定义设置进行编译,这可能会产生不同的结果 与luxon文档一样,android上对react native的支持是有限的 在iOS上,react native使用操作系统提供的JSC,其中还包括intl特性。android上的JSC不支持int的原因是JSC与apk捆绑在一起,使用intl支持编译它会将apk大小增加几MB 通过一些简化(分叉hafas客户机)和解决日期问题,我相信您应该能够解决这个问题。您也可以使用,但要注意,您可能会遇到其他类型的问题,这些问题可能很难得到帮助(有一段时间,用户使用从这个repo编译的JSC,但由于一些问题,他们不得不停止使用自定义构建) 或者,您可以尝试使用
我怎么知道的?您将看到error对象包含一组额外的信息。当您记录错误时,您只是得到了
说明
字段,但是如果您记录请求
字段,您将看到它包含“过期”:“无效日期时间”
。就在那里 这里是hafas客户端的作者。发布帖子是为了提高知名度,因为我没有评论的声誉
正如我在中所记录的,我设法使用了hafas-client@3.0.0-alpha.9
在react native中开箱即用,在我添加了之后。请尝试这个
当然,可能还有另一个与
luxon
(如中所述)相关的问题,但至少在没有EPARSE
错误或未编码响应有效载荷的情况下查询数据与luxon
无关,显然已经解决。您的所有代码可能都没有执行。Android使用Proguard删除未使用的资源,但Proguard并不总是知道哪些资源未使用,因此您需要在Proguard-rules.pro文件中进行配置。它在调试模式下工作的原因(如果Proguard是导致问题的原因)是Android跳过了Proguard优化以加快构建时间。我在build.gradle中注释了minifyEnabled和EnableProGuardInReleaseBuids。但同样的问题…我也尝试过(在我的原生Android应用程序中),它似乎没有什么不同;因此,似乎没有简单的方法来禁用Proguard。我建议你无论如何使用它来防止逆向工程。尝试登录每个相关方法,并将日志与常规和调试APK进行比较,以查看缺少的内容。我在build.gradle def enableProguardInReleaseBuilds=false中找到了这一点。因此,根据您的控制台的默认设置,Proguard被禁用。如果您没有运行外部js调试器,日志将中断您的应用程序。由于您的本机应用程序环境将没有控制台
-全局变量,JavaScript将抛出错误。那么校验和是什么呢?校验和在示例repo:bu中也与jsc不同works@KTWorks请求还包含无效的日期时间,因此校验和不同。至于自定义JSC,您需要指定正确的构建标志,以便使用intl支持对其进行编译。我遇到了另一个问题,api响应在调试模式下是正确的,但当我停止调试时,api响应200,但不是更新的响应,但在postman中,相同的api工作得非常完美。。我不知道现在该怎么办。。。