Worklight - require.js 不会在 iPad2 iOS 设备上加载模块

Posted

技术标签:

【中文标题】Worklight - require.js 不会在 iPad2 iOS 设备上加载模块【英文标题】:Worklight - require.js does not load modules on iPad2 iOS device 【发布时间】:2014-05-23 12:29:15 【问题描述】:

我正在使用 require.js 开发一个移动应用程序 (Worklight 6.0.1),我可以在移动浏览器模拟器甚至 ios XCode 模拟器上成功执行它,但在 iPad2 iOS 7.0.4 设备上部署时它不起作用。 我的猜测是 requre.js 和 Worklight 附带的 cordova 之间存在一些冲突,因为执行的是全局范围内的代码,而不是 require 模块中的代码。

【问题讨论】:

Cordova 也是您在模拟器中运行的应用程序的一部分,因此...听起来并不相关。添加更多信息,例如:日志、错误消息、代码 sn-ps... XCode 输出没有错误。我也打开了 Safari 开发工具,控制台是空的。 开始在代码的关键函数中添加警报,看看何时何地失败。 就像我说的,全局范围的代码被执行了(我注意到这个警报)但是 require(...) 函数中的代码没有被执行——这个范围内的警报没有到达。 您能否制作一个非常简单的演示项目来展示该问题并上传到 Dropbox? 【参考方案1】:

您是否在 Cordova 触发 deviceready 事件后调用 require()?

【讨论】:

在 Worklight 中,您不应检查 deviceready 事件 - 这是 wlCommonInit 函数的用途。当执行来自此函数的代码时,这意味着 Worklight 框架和 Cordova 已完全初始化 - 设备就绪检查由 Worklight 在内部完成。【参考方案2】:

看起来我写错了文件名:filelogger vs fileLogger。此外,我发现 require/define 函数中引用的一些 JS 文件不再存在 - 之前已将它们删除。此错误仅在实际设备上部署时出现(在 iOS 模拟器中应用程序正确执行)。

【讨论】:

【参考方案3】:

这里详细描述了“RequireJS + Cordova”的问题https://www.nothing.ch/en/research/using-optimised-requirejs-combination-phonegap

【讨论】:

【参考方案4】:

事实上,您的问题肯定与“filelogger”与“fileLogger”大小写不匹配有关。

它在模拟器上工作,因为令人难以置信的是,苹果设备的模拟器不区分大小写,但实际设备是。在我身上发生了几次资源在模拟器上完美加载但在实际设备上没有加载的情况。

【讨论】:

以上是关于Worklight - require.js 不会在 iPad2 iOS 设备上加载模块的主要内容,如果未能解决你的问题,请参考以下文章

在 Mobile Browser Simulator 中预览 Worklight 应用程序会在 Worklight 6.1 中打开 index.html,但不会打开 View.html(由 WAF 编

使用 Oracle 和 Liberty 安装 Worklight Server v506 不会创建预期的目录结构

构建 iOS 混合应用程序不会更新 worklight.plist 或 root.plist 文件

require.js 基础使用方法记录

浅谈require js

IBM Worklight - 基于 6.1 构建的项目不会部署在 6.1 服务器上,说我需要使用 6.0