设置Cookie时出错 - 无法读取属性' 1' null

时间:2015-11-04 14:50:45

标签: javascript google-chrome cookies

我在多个网站上部署了一个应用程序。所有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)

我无法在谷歌中找到任何类似的例外情况。任何人吗?

1 个答案:

答案 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]);
  }
}

虽然这不是一个确切的解决方案,因为我不知道真正的_parseKeyValuePairparseCookie,但我相信这可以帮到你。