Cordova:无法调用未定义的方法“exec”
Posted
技术标签:
【中文标题】Cordova:无法调用未定义的方法“exec”【英文标题】:Cordova: Cannot call method 'exec' of undefined 【发布时间】:2013-07-25 07:32:15 【问题描述】:我正在使用带有 Cordova/Phonegap 的 Facebook Connect 插件,此处已解释 (https://github.com/phonegap-build/FacebookConnect)。我已经包含了我的 Facebook SDk js 文件,还包含了 FB Cordova js 文件,我没有包含 Cordova.js 文件本身,因为当我调用登录时它似乎已包含在 Ripple Emulator(使用 Ripple 测试)中Facebook JS 文件中的方法我在 try-catch 块中得到异常:'Cannot call method 'exec' of undefined'
这是我的代码的快照
document.addEventListener('deviceready', function()
try
alert('Device is ready! Make sure you set your app_id below this alert.');
FB.init( appId: "appid", nativeInterface: CDV.FB, useCachedDialogs: false );
document.getElementById('data').innerhtml = "";
catch (e)
alert(e);
, false);
从 Chrome 开发工具中,我在被调用函数的调用堆栈 [native code] 中看到这可能是原因,这是否意味着我必须在设备上进行测试?
任何建议都将不胜感激。
【问题讨论】:
【参考方案1】:当您使用 Ripple 模拟器测试页面时,您应该包含 cordova.js 文件。 Ripple 模拟器仅模拟移动环境,您仍然需要定义 Cordova 对象的 cordova.js 文件。
Phonegap 插件使用 Cordova.exec 从 javascript 调用本机方法。您的 Facebook 插件也将使用该方法进行本地方法调用。还要确保在页面中的 facebook 插件 js 文件之前包含“cordova.js”。
【讨论】:
Cordova 调用本机方法,这就是我在 Ripple 模拟器中收到此错误的原因吗,这是否意味着 Ripple 无法使用本机方法 我不这么认为。本地调用都是由 Ripple 模拟的。插件 js 必须调用 'Cordova' 对象的 exec 方法。但是如果在此之前没有包含cordova.js,'Cordova'将是未定义的,所以你会得到'Cannot call method 'exec' of undefined。 你说得对,在 Ripple 中使用正确版本 (2.0.0) 修复了问题的 cordova/phonegap 环境似乎存在不兼容问题以上是关于Cordova:无法调用未定义的方法“exec”的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 无法使用 --target 读取未定义的属性“名称”
无法安装“cordova-plugin-firebase-authentication”:未定义
PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”