一些 Cordova 插件在 iOS 模拟器中未定义
Posted
技术标签:
【中文标题】一些 Cordova 插件在 iOS 模拟器中未定义【英文标题】:Some Cordova plugin are undefined in iOS emulator 【发布时间】:2014-12-18 07:31:24 【问题描述】:我正在使用许多 cordova 插件,它们都可以在 android 上正常运行,但在 ios 上无法正常运行。我正在模拟器上使用 cordova-ios 3.7.0、cordova CLI 4.1.2、iOS 7.0、7.1、8.0 构建。我已经尝试了我能找到的每一个技巧,比如cordova platform update ios
,重新添加平台 ios,重新添加插件,在 xcode 中清理和重建。
我很确定 cordova.js
和 cordova_plugins.js
已包含(从 safari 网络检查器可见,我可以找到 window.cordova
对象),并且我所有的插件都在 cordova_plugins.js
中。有什么想法吗?
[编辑]
一些例子:
(cordova 网络状态插件)
undefined is not an object (evaluating 'navigator.connection.type')
我可以找到navigator
对象,但在对象中没有道具connection
。
也没有 Connection
obj,但我可以从 safari 网络检查器资源中看到 network.js
和 connection.js
。
deviceready
事件未触发且没有 window.device
对象。但我也可以在资源中找到device.js
。
[编辑]
Xcode 构建控制台:
2014-12-18 17:02:38.687 t2[87811:60b] Apache Cordova native platform version 3.7.0 is starting.
2014-12-18 17:02:38.689 t2[87811:60b] Multi-tasking -> Device: YES, App: YES
2014-12-18 17:02:38.906 t2[87811:60b] Unlimited access to network resources
2014-12-18 17:02:39.833 t2[87811:60b] [CDVTimer][keyboard] 0.059009ms
2014-12-18 17:02:40.471 t2[87811:60b] [CDVTimer][socialsharing] 637.811959ms
2014-12-18 17:02:40.579 t2[87811:60b] [CDVTimer][file] 107.617974ms
2014-12-18 17:02:41.567 t2[87811:60b] [CDVTimer][splashscreen] 987.930000ms
2014-12-18 17:02:41.568 t2[87811:60b] [CDVTimer][TotalPluginStartup] 1735.188007ms
2014-12-18 17:02:41.948 t2[87811:60b] Resetting plugins due to page load.
2014-12-18 17:02:43.176 t2[87811:60b] Finished load of: file:///Users/applesw2/Library/Developer/CoreSimulator/Devices/*****/data/Applications/*****/t2.app/www/index.html#/app/file
【问题讨论】:
你怎么知道插件是未定义的,你会在 deviceready 事件之后测试它们吗?也许你可以分享一些代码。 我从 safari web 检查器控制台尝试了它们。已编辑以获取更多信息。 【参考方案1】:为未来的搜索者提供答案。这是因为我的一个插件损坏了cordova.js
,所以在损坏的插件之后包含的插件不适用于 js。我错过了这个错误,因为 safari web 检查器没有持久控制台日志,所以在检查器打开之前我看不到错误消息。
【讨论】:
今天这条小评论为我节省了几个小时,但它可能更具体。对于其他来到这里的人认为他们可能有一个加载的插件会破坏 cordova.js,在 iOS 模拟器中加载您的应用程序,在 Safari 中调试它,在 Safari 控制台中运行 window.location.reload() 以重新加载应用程序和看看您在加载应用时是否遇到任何错误!【参考方案2】:它是未定义的,因为函数不存在。确保将 www
文件夹(cordova 插件 repo)中的 js
文件集成到您的项目中。
【讨论】:
谢谢,但是我可以从网络检查器资源中找到所有 js 文件。以上是关于一些 Cordova 插件在 iOS 模拟器中未定义的主要内容,如果未能解决你的问题,请参考以下文章
Simulator architectures - 包含原生 iOS 框架的 Cordova 插件
ios 上的 Cordova 和 Ionic - 设备插件不起作用
所有原生 cordova 插件都停止在 Ionic3 上工作
Cordova iOS Contact Picker 本机覆盖插件无法正常工作