我在多个网站上部署了一个应用程序。所有UI错误都会发送到我们的服务器进行记录。 我们收到了以下错误。
上下文:使用从w3school(link)获取的代码,使用普通javascript(无jQuery)设置cookie。
浏览器:Chrome。
版本:45.0.2454.101
操作系统:Linux
TypeError: Cannot read property '1' of null
at _parseKeyValuePair (eval at <anonymous> (unknown source), <anonymous>:123:22)
at parseCookie (eval at <anonymous> (unknown source), <anonymous>:73:16)
at HTMLDocument.Object.defineProperty.set [as cookie] (eval at <anonymous> (unknown source), <anonymous>:176:18)
at setCookie (script.min.js:1:3446)
at Array.widgetLoaded (script.min.js:1:11687)
at handleMessage (script.min.js:1:1640)
at eval (eval at <anonymous> (unknown source), <anonymous>:401:13)
我无法在谷歌中找到任何类似的例外情况。任何人吗?
答案 0 :(得分:0)
我认为_parseKeyValuePair
调用正则表达式并访问其结果,而不检查它是否有效,如下面的代码:
function _parseKeyValuePair(str) {
var result = str.match(/(\w+)=(.+?);/);
return {key: result[1], value: result[2]);
}
但如果正则表达式与字符串不匹配,result
可以是null
。在访问之前,您应该检查result
是否为null
,如果不是null
则使用{。}}。
例如,上面的函数可以重写为:
function _parseKeyValuePair(str) {
var result = str.match(/(\w+)=(.+?);/);
if (result !== null) {
return {key: result[1], value: result[2]);
}
}
虽然这不是一个确切的解决方案,因为我不知道真正的_parseKeyValuePair
和parseCookie
,但我相信这可以帮到你。