Ibm mobilefirst 未捕获类型错误:无法使用';在';操作员搜索';支持COOKIES';无效

Ibm mobilefirst 未捕获类型错误:无法使用';在';操作员搜索';支持COOKIES';无效,ibm-mobilefirst,Ibm Mobilefirst,我正在使用IBM Worklight Developer Edition 5.0.5尝试创建简单(HTML和适配器)应用程序,但面临未解决的问题 这可能是一个老论坛中没有回答的问题: [环境] 操作系统:Windows7 64位(日语区域设置), 月食:4.2.1, Worklight:Developer Edition 5.0.5 [说明] 我在Eclipse中创建了Worklight项目,没有任何外部库,如jQuery mobile或Dojo。我在这个项目中添加了HTTP适配器和SQL适配

我正在使用IBM Worklight Developer Edition 5.0.5尝试创建简单(HTML和适配器)应用程序,但面临未解决的问题

这可能是一个老论坛中没有回答的问题:

[环境] 操作系统:Windows7 64位(日语区域设置), 月食:4.2.1, Worklight:Developer Edition 5.0.5

[说明] 我在Eclipse中创建了Worklight项目,没有任何外部库,如jQuery mobile或Dojo。我在这个项目中添加了HTTP适配器和SQL适配器。当我尝试“以……身份运行”时,这两种方法似乎都很有效调用“Worklight过程”。两者都返回了预期的JSON。所以我认为适配器不会有问题

但是当我从HTML文件调用这些适配器时,我得到了“uncaughttypeerror:无法使用'in'操作符在null中搜索'SUPPORT\u COOKIES'”worklight.js中的错误(第2380行)

[我的代码]

var invocationData={adapter:'SQLAdapter',过程: 'getCount',参数:[]}

WL.Logger.debug(“1:invocationData=“+invocationData”)
WL.Client.invokeProcedure(invokeData,{onSuccess: LoadFeedsAccess,On失败:loadFeedsFailure})

调试(“2:loadFeeds”)

函数loadFeedsAccess(结果){WL.Logger.debug(“3:成功: result=“+result);}

函数loadFeedsFailure(结果){WL.Logger.debug(“4:失败: result=“+result);}

[我的调试控制台输出]

1:invocationData=[object]worklight.js:1112

未捕获类型错误:无法使用“in”运算符搜索 null worklight.js:2380中的“支持COOKIES”

wlclient init已启动worklight.js:1112

之前:app init onSuccess worklight.js:1112

之后:app init onSuccess worklight.js:1112

wlclient初始化成功

因此,似乎只成功调用了第一个WL.Logger.debug(),但WL.Client.invokeProcedure()似乎导致了上述未捕获的TypeError,并且它只是失败了(不是调用成功案例回调,也不是失败案例回调)

这是一个SQL适配器案例,但当我尝试使用HTTP适配器时,结果是相同的(在WL.Client.invokeProcedure()中失败)。同样,当我尝试“以运行方式运行…”时,两者都会返回适当的结果调用“Worklight过程”

我的控制台显示此故障发生在worklight.js的第2380行:

2379:isEnabled:函数(字段){

2380:返回!!(配置文件中的字段和配置文件[field])

2381:}

所以我不知道我的代码会出什么问题。关于这个问题有什么想法/信息吗?谢谢你提前通知

已添加
Mac OSX环境中也发生了相同的错误。

调用Worklight API,如 WL.Client.InvokeProcess和WL.Logger.debug应仅在调用wlCommonInit后进行


wlCommonInit驻留在应用程序的主JavaScript文件(您的project\your application\js\application name.js)中。

调用Worklight API,如 WL.Client.InvokeProcess和WL.Logger.debug应仅在调用wlCommonInit后进行


wlCommonInit驻留在应用程序的主JavaScript文件(您的项目\your application\js\application name.js)中。

我找到了导致问题的原因

在访问适配器时,我直接在HTML文件中编辑javascript,使用自动生成标记底部的标记,并尝试创建初始页面。我认为这不适合Worklight。我不确定到底出了什么问题,但我的javascript代码可以在一切准备就绪之前加载


现在我更改了代码我将我的javascript(以前在HTML中)移动到(Projectname.js)中wlCommonInit()函数的最底部。目前,它似乎工作正常,没有像以前那样的错误消息,并通过适配器检索期望的信息。这可能是一个合适的方法。

我已经找到了导致我的问题的原因

在访问适配器时,我直接在HTML文件中编辑javascript,使用自动生成标记底部的标记,并尝试创建初始页面。我认为这不适合Worklight。我不确定到底出了什么问题,但我的javascript代码可以在一切准备就绪之前加载


现在我更改了代码我将我的javascript(以前在HTML中)移动到(Projectname.js)中wlCommonInit()函数的最底部。目前,它似乎工作正常,没有像以前那样的错误消息,并通过适配器检索期望的信息。这可能是一种合适的方法。

要解决此类问题,我们需要检查何时调用第一个适配器调用。我们需要将适配器调用延迟几秒钟,比如1000毫秒。然后您的应用程序将按您喜欢的方式运行

setTimeout(function(){
$(document).ready(function() {

    var invocationData = {
            adapter : 'Contract', 
            procedure : 'GetDropDownListForLogin'
    };
    console.log("Invocation data:" +invocationData);
    var options = {
            onSuccess : OnLogindataSucess,
            onFailure : OnLoginFail,
            };

    WL.Client.invokeProcedure(invocationData,options);


});

},1000);

请使用以下方法,第一个适配器调用它将解决您的问题

要解决此类问题,我们需要检查何时调用第一个适配器调用。我们需要将适配器调用延迟几秒钟,比如1000毫秒。然后您的应用程序将按您喜欢的方式运行

setTimeout(function(){
$(document).ready(function() {

    var invocationData = {
            adapter : 'Contract', 
            procedure : 'GetDropDownListForLogin'
    };
    console.log("Invocation data:" +invocationData);
    var options = {
            onSuccess : OnLogindataSucess,
            onFailure : OnLoginFail,
            };

    WL.Client.invokeProcedure(invocationData,options);


});

},1000);

请使用以下方法,第一个适配器调用它将解决您的问题

谢谢Ishai。但我仔细检查了这一行,它已经(自动)插入到我的HTML中。正如您在[My debug console output]的第一行中看到的,WL.Logger.debug()本身似乎可以工作。我找到了一个解决方案!你的建议是一个很大的暗示,Ishai。我很感激。我将很快发布我的答案。谢谢Ishai。但我仔细检查了这一行,它已经(自动)插入到我的HTML中。正如您在[My debug console output]的第一行中看到的,WL.Logger.debug()本身似乎可以工作。我找到了一个解决方案!你的建议是一个很大的暗示,Ishai。我很感激