反应调试模式和正常模式之间的本机不同行为

2024-07-01

嗨,我有一个非常复杂的问题。所以我在 github 上为这个问题创建了一个新的存储库。所以你可以克隆它并看看问题是什么。

https://github.com/guitar9/hafas-client-example https://github.com/guitar9/hafas-client-example

我在用https://github.com/public-transport/hafas-client 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 https://www.diffnow.com/?report=pvuq7问题是outDated,out Time和checksum。有人可以帮助我吗?


问题是使用勒克森图书馆 https://moment.github.io/luxon/index.html在 hafas-client 库中。您将看到存储库中提供的代码在 iOS 上运行良好,并且仅在启用远程调试的情况下在 Android 上运行良好。为什么?

启用远程调试后,代码不会在您的手机中运行,而是在 Chrome 浏览器的 V8 引擎中运行。当禁用远程调试时,代码会在您的手机上运行,​​而对于 Android,它会在 2014 年末的 JavaScriptCore (JSC) 引擎上运行,该引擎是使用 React Native 的自定义设置进行编译的 - 这可能会提供不同的结果。

正如 luxon 文档指出 https://moment.github.io/luxon/docs/manual/install.html#react-native,对 android 上的 React Native 的支持是有限的。

在 iOS 上,React Native 使用操作系统提供的 JSC,其中还包括 intl 功能。 Android 上的 JSC 不支持 int 的原因是 JSC 与 apk 捆绑在一起,使用 intl 支持编译它会使 apk 大小增加几 MB。

通过一些定制(分叉 hafas 客户端)并解决日期问题,我相信您应该能够解决这个问题。您还可以使用this https://github.com/react-community/jsc-android-buildscripts但请注意,您可能会遇到其他类型的问题,这些问题可能很难获得帮助(有一段时间,世博客户 http://expo.io/曾经使用从此存储库编译的 JSC,但由于一些问题,他们不得不停止使用自定义构建)。

或者,您可以尝试使用国际填充 https://github.com/andyearnshaw/Intl.js/

我是怎么知道的?here https://github.com/public-transport/hafas-client/blob/edab8fe4a9e04e4ced70a269fa0219fc78fa15dc/lib/request.js#L53您会看到错误对象包含一堆额外信息。当您记录错误时,您刚刚得到description字段,但如果您记录request字段,你会看到它包含"outDate": "Invalid DateTime"。就在那里!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反应调试模式和正常模式之间的本机不同行为 的相关文章

  • 邪恶的 Firefox 错误——“底层对象不支持参数或操作”

    我想弄清楚这里发生了什么事 我已经研究了几个小时了 似乎无法理解为什么会发生这种情况 我正在进行一些 AJAX 调用 但仅在 Mac OS X 上的 Firefox 版本 21 中不断收到此错误 这是错误 Exception A param
  • Next.js 切换 div 标签的显示

    Code export default function Header let showMe false function toggle showMe showMe return lt gt
  • dc.js 和 crossfilter 减少了一周中每天的平均计数

    我很难正确设置我的交叉过滤器组 也许有人可以给个提示 我的数据结构看起来或多或少是这样的 datetime 2014 01 01 20 00 00 id 1 datetime 2014 01 01 22 21 08 id 2 datetim
  • Android UserManager.isUserAGoat() 的正确用例?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我正在查看 中引入的新 API安卓4 2 http en wikipedia org wiki Android version
  • 限制 JavaScript 函数调用,但进行排队(不丢弃调用)

    函数如何限制其调用速率 如果调用过于频繁 则不应丢弃 而应排队并及时间隔开 相隔 X 毫秒 我看过throttle http drupalmotion com article debounce and throttle visual exp
  • 用javascript去掉未使用的小数

    我有一个货币输入 只需要返回有效数字 输入始终有两位小数 因此 4 00 gt 4 4 10 gt 4 1 4 01 gt 4 01 这是我目前正在做的事情 chop off unnecessary decimals if val char
  • 全选/取消全选页面中的复选框

    我看过this http railsforum com viewtopic php id 2151这似乎对我的代码没有影响 我试过了this https stackoverflow com questions 888173 select a
  • 显示为问号的度unicode

    以下代码显示为问号而不是度数符号 var airF Math round Number MDTMOBILE RWISWeather i AirTemp u00B0 F tempTable find td eq 4 text airF var
  • 在单元测试用例中未调用 AsyncTask onPostExecute()

    我看过很多与此相关的帖子 但似乎没有一个与我遇到的问题相同 GetBusinessRulesTask 扩展了 AsyncTask 当我在单元测试用例中执行此操作时 onPostExecute 永远不会被调用 但是 如果我使用真正的客户端代码
  • 将框架外页面重定向到index.htm中的特定框架

    我在 index html 文件上使用框架 在框架的每个页面上 我都有一个代码来检查页面是否在框架中 如果没有 则重定向到index html 现在 我不仅想检查页面是否在框架中并重定向到index html 而且还想在index html
  • 当没有电子邮件客户端时,“mailto:”会做什么?

    我正在开发一个网站 什么是mailto 如果没有电子邮件客户端 如 Outlook Thunderbird 等 如何打开 它可以在我的电脑上运行 该电脑装有 Outlook 但如果有人想要怎么办 mailto 例如 在 gmail com
  • d3.js 雷达图 - 填充线条之间

    我正在尝试在其中两个三角形之间创建填充 例如在红色和绿色三角形之间创建红色填充 有人知道如何做到这一点吗 我见过另一个雷达图的例子 我相信它做了类似的事情 尽管我认为他们使用CSS而不是d3创建填充 使用径向图用 mbostock 的答案解
  • javascript 权限被拒绝访问属性

    我在从不同的 iframe 访问属性时遇到问题 我不断收到此权限被拒绝访问属性错误 我见过有人多次询问他们是否使用 file 但没有人 除了我 所以这个问题永远不会得到解决 我不会在网络上这样做 我所有帧的 src 都位于硬盘驱动器上的同一
  • 使重复的scrollBy像jQuery的动画scrollTop一样平滑

    如何使重复的scrollBy调用更平滑 就像使用jQuery的animatescrollTop制作动画一样 目前它是跳跃的 页面在不同的滚动位置之间跳转 我怎样才能让它更顺畅 这是滚动代码 window scrollBy 0 10 scro
  • AngularJS ui-router:如何全局解析所有路由的典型数据?

    我有一个 AngularJS 服务 它与服务器通信并返回 申请表不同部分的翻译 angular module utils service Translations q http function q http translationsSer
  • 多个选择器:确定触发选择器?

    这是一个我无法弄清楚的小问题 我相信很快就会有人回答 有多个选择器 例如 a button span xyz a another click function e var clicked element 我如何找出实际单击了哪个选择器 我需
  • EditText“maxLines”属性不起作用

    我有一个多行 EditText 用户可以在其中输入长句子 这就是我想要的 高度为 6 行的 EditText 从第一行到第五行 我希望 EditText 的 IME 操作按钮具有 Enter 转到新行 按钮 在第六 最后 行 它应该更改为
  • 使用 grunt js,如何监视 .coffee 文件的变化?

    我是 gruntjs 新手 这是我的简单 gruntfile global module false module exports function grunt Project configuration grunt initConfig
  • 在这种情况下是否违反了 Google Play 开发者政策? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想通过 Android 应用程序赚一些钱 但我面临一个大问题 Google 在 Google Play 上不支持我所在的国家 地区 适用
  • 通过 http 在两个 Node.js 服务器之间传输文件

    我有两个通过 http 相互通信的 node js express 服务器 server A它还与浏览器通信并可以处理文件上传请求 当文件上传到server A我想将其原样转移到server B以便进一步加工 最好的方法是什么 最好与请求

随机推荐

  • 在运行时更改语言的正确方法

    在运行时更改表单语言的正确方法是什么 使用递归手动设置所有控件 例如this https stackoverflow com questions 7556367 how do i change the culture of a winfor
  • 是否可以更改 UISearchBar 占位符的对齐方式?

    由于输入语言不同 我需要以不同的对齐方式显示 UISearchBar I saw 这个答案 https stackoverflow com questions 9251592 how to change the alignment of a
  • Qt:将事件发布到 QThread 的正确方法?

    在我的 Qt 应用程序中 我有一个主线程和一个工作线程 工作线程子类QThread并通过处理事件customEvent 这是主线程发送要由工作线程处理的事件的正确方法吗 QThread myWorkerThread QApplication
  • 使用 Matplotlib 和 TeX 实现均匀间距

    我正在为数学课绘制一些图表 但我无法在绘图图例中正确地获得和平定义的间距 我目前正在使用 对于 TeX 中的单个空间 但会遇到一种情况 其中一个空间比另一个空间稍远 这可能是由于左边的方程占用了多少空间 这是我的代码 import matp
  • 如何使用 Jsoup 仅删除文本中的 html 标签?

    我想使用 JSOUP 从文本中仅删除 html 标签 我使用了这里的解决方案 我之前关于 JSOUP 的问题 https stackoverflow com questions 33466557 jsoup remove only html
  • iOS-Charts 如何将 UIImage 放在点旁边

    我想使用 iOS Charts 和 Swift 来绘制一些折线图来显示数据 现在 我有一个要求 在每个点旁边放置一个小图标 现在我可以在图表上添加 UIImage 但问题是如何正确获取每个点的 CGPoint 坐标 如果我改变设备或设备类型
  • LAPACK正交化函数

    lapack 中是否有现成的例程来执行正交归一化 例如 Gram Schmidt 或 QR 方法的某些变体 如果不是 使用 lapack 执行正交归一化的建议方法是什么 就在这里 看着 sgeqrf single precision rea
  • Go 中将字符串转换为二进制

    在 Go 中如何将字符串转换为其二进制表示形式 Example 输入 A 输出 01000001 在我的测试中 fmt Sprintf b 75 仅适用于整数 将 1 个字符的字符串转换为字节以获得其数字表示形式 s A st fmt Sp
  • 在浏览器中输入有效网址时,React 路由不断重定向到登陆页面

    我有这个路由配置 它工作得很好 只有一件事一直让我烦恼 即使导航应用程序有效 当我转到地址栏并按 Enter 键时 它会将我重定向到 添加用户即使我不更改网址并按 Enter 键 这是我的路线配置 function AppRoutes se
  • OnGuard 许可

    最近 我研究了使用 OnGuard 来帮助诚实的人遵守他们的原则 我同意这里许多人表达的观点 即任何许可制度都无法保护您免受那些想要使用您的软件但不想付费的人的侵害 另一方面 我想避免让其他人太容易为我的程序创建有效密钥 研究完手册和示例后
  • 从 RoR 模型中获取两个随机元素

    我正在尝试使用 RoR 来做一些简单的事情 但在掌握基础知识方面遇到了一些困难 我最接近的背景是 ASP NET MVC 但我发现所有 RoR 教程都重点关注 Rails 真正擅长的内容 脚手架的东西 而不是如何制作自己的操作并让它们使用参
  • 如何在 MYSQL 中通过另一列选择具有 MAX(列值)、PARTITION 的行?

    我有一张球员表现表 CREATE TABLE TopTen id INT UNSIGNED PRIMARY KEY AUTO INCREMENT home INT UNSIGNED NOT NULL datetime DATETIME NO
  • 如何通过CLI / PUTTY访问AWS RDS?

    我是AWS新手 我可以通过putty访问EC2用户 像这样我如何通过 PUTTY 连接 AWS RDS 我有AWS RDS端点 如果我尝试如下 mysql h testing cx2wamr3cbzm us west 2 rds amazo
  • 连接到 javascript/node.js 中的 Gmail IMAP API

    我正在尝试通过其连接到 gmailIMAP API https developers google com google apps gmail oauth overview 我正在使用布鲁诺 莫伦西的节点 imap 库 https gith
  • 实体框架 - 将枚举的 ICollection 保存在数据库中

    我有一个具有 type 属性的类ICollection
  • 有效地将字符串(或元组)转换为 ctypes 数组

    我有一段代码 它采用 PIL 图像并将其转换为 ctypes 数组以传递给 C 函数 w px h px img size pixels struct unpack dI w px h px img convert RGBA tostrin
  • 将 ManualResetEvent 包装为可等待任务

    我想等待手动重置事件 并超时并观察取消 我想出了类似下面的东西 手动重置事件对象由我无法控制的 API 提供 有没有办法在不占用和阻塞 ThreadPool 线程的情况下实现这一点 static Task
  • 将 geom_text 与 ggplot2 中的 geom_vline 对齐

    I used vjust作为解决方法并详细阐述 通过尝试和错误可以接受的距离 但这有时非常耗时且变化 与字体大小和轴比例 有没有更好的方法来自动对齐示例中的文本 library ggplot2 ggplot data mtcars aes
  • 如何阻止richfaces风格?

    我开发了这个联系表格
  • 反应调试模式和正常模式之间的本机不同行为

    嗨 我有一个非常复杂的问题 所以我在 github 上为这个问题创建了一个新的存储库 所以你可以克隆它并看看问题是什么 https github com guitar9 hafas client example https github c