Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs ReferenceError:未定义存储_Reactjs_React Router Dom - Fatal编程技术网

Reactjs ReferenceError:未定义存储

Reactjs ReferenceError:未定义存储,reactjs,react-router-dom,Reactjs,React Router Dom,我是React的新手,正在尝试从网络资源中学习。我在网上找到了MERN完整的登录代码。当我尝试使用npm start编译时,它没有问题,但是当我尝试使用npm test编译时,它会给出错误“ReferenceError:localStorage未定义” 我试图声明localStorage的任何变量,但也得到了类似的错误。似乎我需要把值放在某个地方,但为什么它只在npm测试中给出一个错误 这是因为localStorage在测试环境JSDOM中不起作用。 您可以查看此错误位于第`{localStor

我是React的新手,正在尝试从网络资源中学习。我在网上找到了MERN完整的登录代码。当我尝试使用npm start编译时,它没有问题,但是当我尝试使用npm test编译时,它会给出错误“ReferenceError:localStorage未定义”

我试图声明localStorage的任何变量,但也得到了类似的错误。似乎我需要把值放在某个地方,但为什么它只在npm测试中给出一个错误


这是因为localStorage在测试环境JSDOM中不起作用。
您可以查看

此错误位于第`{localStorage.usertoken?userLink:loginRegLink}`行,如果您是指来自浏览器locastorage的usertoken,请尝试以下操作:localStorage.getItem'usertoken'这是否回答了您的问题@是的,我知道这是一个错误,但如何解决这个问题,我已经尝试了localStorage.getItem'usertoken',但问题仍然存在remain@Wenfeng它的代码似乎是正确的。它在这里工作哦,真的吗?它似乎在我们的工作没有问题。
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
import React, { Component } from 'react'
import { Link, withRouter } from 'react-router-dom'

class Landing extends Component {

  logOut(e) {
    e.preventDefault()
    localStorage.removeItem('usertoken')
    this.props.history.push(`/`)
  }

  render() {

    const loginRegLink = (
      <ul className="navbar-nav">
        <li className="nav-item">
          <Link to="/login" className="nav-link">
            Login
          </Link>
        </li>
        <li className="nav-item">
          <Link to="/register" className="nav-link">
            Register
          </Link>
        </li>
      </ul>
    )

    const userLink = (
      <ul className="navbar-nav">
        <li className="nav-item">
          <Link to="/profile" className="nav-link">
            User
          </Link>
        </li>
        <li className="nav-item">
          <a href="" onClick={this.logOut.bind(this)} className="nav-link">
            Logout
          </a>
        </li>
      </ul>
    )

    return (
      <nav className="navbar navbar-expand-lg navbar-dark bg-dark rounded">
        <button
          className="navbar-toggler"
          type="button"
          data-toggle="collapse"
          data-target="#navbarsExample10"
          aria-controls="navbarsExample10"
          aria-expanded="false"
          aria-label="Toggle navigation"
        >
          <span className="navbar-toggler-icon" />
        </button>

        <div
          className="collapse navbar-collapse justify-content-md-center"
          id="navbarsExample10"
        >
          <ul className="navbar-nav">
            <li className="nav-item">
              <Link to="/" className="nav-link">
                Home
              </Link>
            </li>
          </ul>
          {localStorage.usertoken ? userLink : loginRegLink}
        </div>
      </nav>
    )
  }
}

export default withRouter(Landing)