Recently I meet with an annoying Javascript error “undefined is not a function” during my Fiori development. After debugging the framework code for several hours
, I finally find a more efficient way to find the exact source code which causes the trouble. I would like to share this small tip with you and hope it could help.
Issue: When I am doing test on my application on a local tomcat, I could only see an empty screen.
For sure there must be some Javascript error occurred.
Open Chrome console and I see one Uncaught TypeError: undefined is not a function as expected.
Unfortunately this error is raised in UI5 framework js “UIComponent.js”, after I click the hyperlink in the screenshot above, I am automatically navigated to this file, however I do completely not understand what has happened here, in function ( q, C, U, V ).
Then I press Ctrl+Alt+Shift+P to switch on debug by marking checkbox “Use Debug Sources”.
Refresh UI and now the debug resource, UIComponent-dbg.js is loaded instead. Since what I bad need is the context of this error, or callstack, so I set a breakpoint on catch statement, line 47. Relaunch application UI and breakpoint is triggered. I add variable e in Watch Expression:
Expand variable e in Watch Expressions and put the mouse to stack. The complete callstack is instantly displayed. The topmost callstack shows the error occurs in line 154, column 36 of file ConnectionManager-dbg.js:
Then I find the root cause here:
the variable service.serviceUrl is not a String but an object of URI which does not have a method named “indexOf”:
Conclusion
Although this error is raised in UI framework js file, it is however an absolute application issue: the url of OData is defined in Configuration.js file by application as metadata, and UI framework in the runtime will ask for it by calling some callback functions defined by application and then consume it. Framework will assume always a String for OData service url returned by application. After the following fix is done on application, the issue is fixed.
Any other alternative solution?
Later on I find another approach to find the position ( line 154, column 36 ) even without debugging.
I test my app with Firefox. To my surprise, it could directly display more detail about this error compared with Chrome: “j.serviceUrl.indexOf is not a function”.
The Firefox console shows this error occurs in sap-ui-core.js line 80
However I could not find any hit by searching “indexOf” within this file.
So I just again switch to Chrome and search serviceUrl.indexOf in Chrome instead, this time I get directly what I am looking for.
From this cause it seems that these two complementary powerful tool, Chrome and Firefox, could make our life as UI5 developer more easier.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
在SAPUI5和非SAPUI5环境中将使用大量针对通用和UI5的功能帮助器。 就像控制器上的utilities.js文件一样,可以轻松导入它。 所有函数都是curried ,这意味着如果未为调用函数提供所有必需的参数,它将返回另一个期望...
内容概要:本文详细介绍了参与西门子杯比赛中关于三部十层电梯系统的博图V15.1程序设计及其WinCC画面展示的内容。文中不仅展示了电梯系统的基本架构,如抢单逻辑、方向决策、状态机管理等核心算法(采用SCL语言编写),还分享了许多实际调试过程中遇到的问题及解决方案,例如未初始化变量导致的异常行为、状态机遗漏空闲状态、WinCC画面动态显示的挑战以及通信配置中的ASCII码解析错误等问题。此外,作者还特别提到一些创意性的设计,如电梯同时到达同一层时楼层显示器变为闪烁爱心的效果,以及节能模式下电梯自动停靠中间楼层的功能。 适合人群:对PLC编程、工业自动化控制、电梯调度算法感兴趣的工程技术人员,尤其是准备参加类似竞赛的学生和技术爱好者。 使用场景及目标:适用于希望深入了解PLC编程实践、掌握电梯群控系统的设计思路和技术要点的人士。通过学习本文可以更好地理解如何利用PLC进行复杂的机电一体化项目的开发,提高解决实际问题的能力。 其他说明:文章风格幽默诙谐,将严肃的技术话题融入轻松的生活化比喻之中,使得原本枯燥的专业知识变得生动有趣。同时,文中提供的经验教训对于从事相关领域的工作者来说非常宝贵,能够帮助他们少走弯路并激发更多创新思维。
数据库第一章选择题练习(1).docx
# 【spring-ai-pdf-document-reader-1.0.0-M7.jar中文文档.zip】 中包含: 中文文档:【spring-ai-pdf-document-reader-1.0.0-M7-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【spring-ai-pdf-document-reader-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-pdf-document-reader-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-pdf-document-reader-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-pdf-document-reader-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-pdf-document-reader-1.0.0-M7.jar中文文档.zip,java,spring-ai-pdf-document-reader-1.0.0-M7.jar,org.springframework.ai,spring-ai-pdf-document-reader,1.0.0-M7,org.springframework.ai.reader.pdf,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,springframework,spring,ai,pdf,document,reader,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【spri
适用于理工专业的毕业生,毕业答辩时可供参考,叙述详细准确,可以作为自己答辩PPT的参考
weixin248食堂订餐小程序ssm(文档+源码)_kaic
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
内容概要:本文详细介绍了如何利用主从博弈(Stackelberg Game)模型进行电热综合能源系统的动态定价与能量管理。首先解释了主从博弈的基本概念及其在电热综合能源系统中的应用背景,即供电公司作为领导者通过制定电价策略影响用户行为,用户作为追随者根据电价调整用电模式。接着,通过MATLAB编写仿真程序,具体展示了供电公司定价策略、用户响应模型以及主从博弈迭代过程。仿真结果显示,电价与用电需求之间存在动态平衡关系,供电公司可通过调整电价引导用户合理用电,实现系统整体最优运行。此外,文中还讨论了热力系统建模、成本计算方法、博弈迭代收敛条件等关键技术细节,并对未来的研究方向进行了展望。 适合人群:从事能源管理系统设计、优化及相关领域的研究人员和技术人员,特别是对博弈论在能源系统中的应用感兴趣的学者。 使用场景及目标:适用于希望深入了解电热综合能源系统中动态定价与能量管理机制的人群。主要目标是通过理论分析和MATLAB仿真,帮助读者掌握主从博弈模型的应用方法,为实际工程设计提供参考。 其他说明:文中提供了详细的MATLAB代码示例,便于读者理解和复现实验结果。同时强调了在实际应用中需要考虑更多不确定性和个性化需求等问题。
Android逆向过程学习
2级C全国计算机考试上机题库汇总.doc
房地产 -龙湖物业品质提升小方法.doc
内容概要:本文详细介绍了基于S7-200 PLC和MCGS组态软件构建的煤矿排水系统控制方案。主要内容涵盖IO分配、梯形图程序设计、接线图原理、MCGS组态画面配置等方面。通过对水位传感器、故障传感器等输入设备和排水泵、报警装置等输出设备的精确控制,确保了排水系统的高效、可靠运行。文中还分享了一些实际项目中的调试经验和故障排除技巧,如硬件配置优化、信号干扰处理、水位监测精度提升等。 适合人群:从事工业自动化领域的工程师和技术人员,特别是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:适用于煤矿及其他矿业企业的排水系统自动化改造项目,旨在提高排水系统的安全性、稳定性和智能化水平,减少人工干预,预防潜在风险。 其他说明:文章不仅提供了理论指导,还包括大量实战经验分享,有助于读者更好地理解和掌握相关技术和应用场景。
【蓝桥杯EDA】客观题解析
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
内容概要:“华中杯”是由华中地区高校或相关机构举办的数学建模竞赛,旨在培养学生的创新能力和团队合作精神。比赛主要面向全国高校在校生(以本科生为主,部分赛事允许研究生参加),采用团队赛形式(3人一组),参赛队伍需在72小时内完成建模、编程及论文写作。竞赛一般在每年4月或5月举行,设有多个奖项,具体比例根据参赛队伍数量确定。; 适合人群:对数学建模感兴趣并希望提升自身能力的全国高校在校生(本科生为主,部分赛事允许研究生参加)。; 使用场景及目标:①帮助学生了解数学建模竞赛的形式与流程;②为参赛者提供备赛建议,如学习往届真题、掌握Matlab、Python、LaTeX等工具以及明确团队分工;③鼓励学生关注官方通知,确保获取最新赛程和规则信息。; 其他说明:2025年的具体赛程、规则可能会有所调整,请以“华中杯数学建模竞赛官网”或主办方通知为准。可通过学校数学系或相关社团获取报名信息。
光强温湿度计stm32.7z
内容概要:本文详细介绍了基于TMS320F2812 DSP控制器的永磁同步电机(PMSM)矢量控制系统的设计与实现。主要内容涵盖电流环和转速环的双闭环控制,包括ADC采样配置、坐标变换(Clarke和Park变换)、PI调节器的实现以及SVPWM生成等关键技术环节。文中特别强调了各个部分的具体代码实现及其调试技巧,如电流采样的三相两线法、PI调节器的积分限幅处理、SVPWM的扇区判断与作用时间计算等。此外,还讨论了一些常见的调试陷阱和解决方案,如QEP解码配置错误、死区时间设置不当等问题。 适合人群:具有一定嵌入式系统和电机控制基础知识的研发人员和技术爱好者。 使用场景及目标:适用于需要深入了解和掌握基于DSP2812的PMSM矢量控制系统的开发者。主要目标是帮助读者理解并实现高效的电流环和转速环双闭环控制系统,确保电机稳定运行并达到预期性能指标。 其他说明:文章不仅提供了详细的代码片段,还分享了许多实用的经验和教训,有助于读者在实际项目中少走弯路。同时,对于一些复杂的技术细节进行了深入浅出的解释,使得初学者也能逐步理解和应用这些高级控制算法。