1

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

使用 {"location":"/","currency":"USD"} 预渲染 App 时遇到错误“TypeError: Cannot read property 'search' of undefined”

我在以下代码中遇到错误

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,

分配:函数...}祖先起源:DOMStringListassign:函数()哈希:“”主机:“localhost:5000”主机名:“localhost”href:“ http://localhost:5000/ ”起源:“ http://localhost:5000 “路径名:“/”端口:“5000”协议:“http:”重新加载:函数重新加载()替换:函数()搜索:“”toString:函数toString()valueOf:函数valueOf()符号(Symbol.toPrimitive) :未定义 的原型:位置

4

2 回答 2

3

经过多次讨论,很难说为什么分配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]);
    }
  }
}
于 2017-06-23T05:43:14.567 回答
2

要回答window.location 的标题问题 title is undefined我浪费了 20 分钟是因为我使用了此处给出的错误大小写。

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

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

于 2020-07-22T11:16:10.433 回答