TypeError:无法使用“in”运算符在 null 中搜索“SUPPORT_WL_SERVER_CHANGE”
Posted
技术标签:
【中文标题】TypeError:无法使用“in”运算符在 null 中搜索“SUPPORT_WL_SERVER_CHANGE”【英文标题】:TypeError: Cannot use 'in' operator to search for 'SUPPORT_WL_SERVER_CHANGE' in null 【发布时间】:2015-02-06 16:49:41 【问题描述】: 更新 - 我最初发布的是 firefox 错误,chrome 错误消息更有用,所以我更新了它的名称(firefox) - worklight.js 中的“in”操作数配置文件无效
(chrome) - TypeError: Cannot use 'in' operator to search 'SUPPORT_WL_SERVER_CHANGE' in null
我看到了与此类似的问题,没有一个得到回答,也没有一个提供重现结果所需的所有代码。
我使用 Firefox 和 chrome 收到不同的消息。所以我更新了标题以显示两者。
复制:
创建一个新的 worklight 项目,以及该项目中的应用程序 创建一个新的 HTTP 适配器,将其命名为 myRESTAdapter
将 index.html 替换为:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>angular_test</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=0.5, minimum-scale=2.0, user-scalable=0">
<script>window.$ = window.jQuery = WLJQ;</script>
<script>
function mobGmapLatLng(pAddress)
var invocationData =
adapter : 'myRESTAdapter',
procedure : 'getGmapLatLng',
parameters : [ pAddress ]
;
WL.Client.invokeProcedure(invocationData,
onSuccess : function(result)
console.debug("good");
var httpStatusCode = result.status;
if (200 == httpStatusCode)
var invocationResult = result.invocationResult;
var isSuccessful = invocationResult.isSuccessful;
if (true == isSuccessful)
var lat = invocationResult.lat;
var lng = invocationResult.lng;
alert("Success: lat=" + lat + " lng=" + lng);
else
alert("Error. isSuccessful=" + isSuccessful);
else
alert("Error. httpStatusCode=" + httpStatusCode);
,
onFailure : function(result)
console.debug("bad");
);
</script>
</head>
<body>
Hello Worklight with getGmapLatLng
<p>
<button onclick="mobGmapLatLng( '11501 Burnet Rd, Austin, TX, USA' )">Austin, TX, USA</button>
</p>
<p>
<button onclick="mobGmapLatLng( '4250 South Miami Boulevard, Durham, NC, USA' )">Durham, NC, USA</button>
</p>
<p>
<button onclick="mobGmapLatLng( '1681 Route des Dolines, 06560 Valbonne, France' )">Valbonne, France</button>
</p>
<p>
<button onclick="mobGmapLatLng( 'Shefayim 60990, Israel' )">Shefayim, Israel</button>
</p>
<p>
<button onclick="mobGmapLatLng( '399 Ke Yuan Lu, Shanghai, China' )">Shanghai, China</button>
</p>
</body>
</html>
在您的适配器中,将 myRESTAdapter.xml 替换为:
<?xml version="1.0" encoding="UTF-8"?>
<wl:adapter name="myRESTAdapter"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wl="http://www.ibm.com/mfp/integration"
xmlns:http="http://www.ibm.com/mfp/integration/http">
<displayName>myRESTAdapter</displayName>
<description>myRESTAdapter</description>
<connectivity>
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>http</protocol>
<domain>http://maps.googleapis.com</domain>
<port>80</port>
<connectionTimeoutInMilliseconds>30000</connectionTimeoutInMilliseconds>
<socketTimeoutInMilliseconds>30000</socketTimeoutInMilliseconds>
<maxConcurrentConnectionsPerNode>50</maxConcurrentConnectionsPerNode>
<!-- Following properties used by adapter's key manager for choosing specific certificate from key store
<sslCertificateAlias></sslCertificateAlias>
<sslCertificatePassword></sslCertificatePassword>
-->
</connectionPolicy>
</connectivity>
<procedure name="getGmapLatLng"/>
</wl:adapter>
并将 myRESTAdapater-impl.js 替换为:
function getGmapLatLng(pAddress)
var input =
method : 'get',
returnedContentType : 'json',
path : 'maps/api/geocode/json',
parameters :
'address' : 'plaza 3 one nationwide blvd columbus oh',
'sensor' : 'false' // hard-coded
;
var response = WL.Server.invokeHttp(input);
// Extract latitude and longitude from the response.
var type = typeof response;
if ("object" == type)
if (true == response["isSuccessful"])
// Drill down into the response object.
var results = response["results"];
var result = results[0];
var geometry = result["geometry"];
var location = geometry["location"];
// Return JSON object with lat and lng.
return location;
else
// Returning null. Web request was not successful.
return null;
else
// Returning null. Response is not an object.
return null;
右键单击 index.html 并选择运行方式-> 预览 打开 firebug,以便您可以看到错误消息:worklight.js 中的“in”操作数配置文件无效 单击其中一个按钮,您将在 firebug 中看到错误消息
*** 注意:我必须进行一些更改,以便在公司防火墙后工作,我认为它应该粘贴并运行,但我目前无法对其进行测试。
** 注释 2:我几乎可以肯定,我之前已经成功运行过这个确切的代码,但我不明白为什么有时我会收到错误,但有时它会起作用
使用工作灯 6.3.0 测试 适配器代码正常运行,并在我使用 run as->invoke mobilefirst 过程调用它时返回正确的数据
行号:worklight.js 中的 5059
【问题讨论】:
错误是否给你一个行号? 是的,还要添加您遇到的错误以及您正在使用的 Worklight 版本。 使用 MFP 6.3 并在 Chrome 中预览应用程序我没有收到此错误。 可能是因为您的适配器代码中有问题;我在服务器日志上解析 JSON 字符串失败。但不是提到的错误。 看看这个问题的答案是否有帮助 - ***.com/questions/11611058/… 【参考方案1】:我重建了项目,并让它工作,当查看工作项目之间的差异时,我的这是我在原始代码中缺少的代码部分:
<script>
var wlInitOptions =
;
if (window.addEventListener)
window.addEventListener('load', function()
WL.Client.init(wlInitOptions); , false);
else if (window.attachEvent)
window.attachEvent('onload', function()
WL.Client.init(wlInitOptions); );
</script>
【讨论】:
我忘记包含包含此代码的 initOptions.js。包含它之后,它就像魅力一样!【参考方案2】:我注意到了这篇文章,实际上请注意现在正在滚动的 iFix : (PI63389)。 该行中的此类 TypeError 不应再停止应用程序。
【讨论】:
以上是关于TypeError:无法使用“in”运算符在 null 中搜索“SUPPORT_WL_SERVER_CHANGE”的主要内容,如果未能解决你的问题,请参考以下文章
Angular typeahead异步结果-接收错误“TypeError:无法使用'in'运算符搜索... in ...”
TypeError:无法使用“in”运算符在未定义中搜索“$__firebase”
无法在 nodeJS 中对用户进行身份验证:TypeError:无法使用“in”运算符在 fs 中搜索“用户名”
TypeError:无法使用“in”运算符在 null 中搜索“SUPPORT_WL_SERVER_CHANGE”
AngularJS指令元素方法绑定 - TypeError:不能使用'in'运算符来搜索1中的'functionName'