window.location未定义

时间:2017-06-22 13:13:04

标签: javascript reactjs react-redux react-on-rails

当我加载react-redux应用程序的主页时,我收到了错误

  

遇到错误" TypeError:无法读取属性'搜索'的   未定义"当预渲染App时   {"位置":" /""货币":" USD"}

我在以下代码中遇到错误

const UrlParser = {

getQueryVariable: (variable) => {
  let query = window.location.search.substring(1);
  let vars = query.split('&');
  for (let i = 0; i < vars.length; i++) {
    let pair = vars[i].split('=');
    if (decodeURIComponent(pair[0]) === variable) {
      return decodeURIComponent(pair[1]);
      }
    }
  }
}

export default UrlParser;

任何人都可以帮助我

修改

控制台上的

window.location提供

    Location {href: "http://localhost:5000/", ancestorOrigins: DOMStringList, origin: "http://localhost:5000", replace: function,
     

分配:功能......}       ancestorOrigins:DOMStringListassign:function()hash:&#34;&#34;主持人:       &#34;本地主机:5000&#34;       主机名       :       &#34;本地主机&#34;       HREF       :       &#34; http://localhost:5000/&#34;       起源       :       &#34; http://localhost:5000&#34;       路径       :       &#34; /&#34;       港口       :       &#34; 5000&#34;协议:&#34; http:&#34; reload:function reload()replace:function()search:&#34;&#34; toString:function toString()valueOf:   function valueOf()符号(Symbol.toPrimitive):未定义    proto :位置

2 个答案:

答案 0 :(得分:2)

经过多次讨论后,很难说为什么分配window.location.search.substring(1)会引发错误。解决此问题的一种方法是使用try catch子句:

getQueryVariable: (variable) => {

  let query;
  try {
    query = window.location.search.substring(1);
  } catch(e) {
    // window.location.search.substring(1) throws an error, set query
    // to fallback value ''
    console.log(e);
    query = '';
  }

  let vars = query.split('&');
  for (let i = 0; i < vars.length; i++) {
    let pair = vars[i].split('=');
    if (decodeURIComponent(pair[0]) === variable) {
      return decodeURIComponent(pair[1]);
    }
  }
}

答案 1 :(得分:0)

要回答 window.location未定义的标题问题标题,我浪费了20分钟,是因为我使用了此处给出的大写字母。

https://developer.mozilla.org/en-US/docs/Web/API/Window/location

Window.location是错误的,window.location是正确的。