【问题标题】:In React:Module not found: Can't resolve 'react-router-dom'在 React:Module not found: Can't resolve 'react-router-dom'
【发布时间】:2019-01-14 10:06:43
【问题描述】:

enter image description here enter image description here

import * as React from 'react';
import Root from './Root';
import './App.css'
import {session} from './libs/session';
import {Redirect} from "react-router-dom";

export default class App extends React.Component {

    public componentWillMount() {
        console.log("componentWillMount App");
    }

    public componentDidMount() {
        console.log("componentDidMount App");
        console.log(window.location.search.replace(/\?/g,''));
        const urlParmes = window.location.search.replace(/\?/g,'');
        session.token = urlParmes.replace(/^token=/g,'');
    }


  public render() {
      if (session.token === '' || session.token === null || session.token === 'undefined') {
          console.log('no Jurisdiction');
          return (<Redirect to='/'/>);
      } else {
          console.log('has Jurisdiction')
      }
    return (
      <div className="App">
        <Root />
      </div>
    )
  }
}

我的目的是检测“令牌”,然后将其重定向到登录页面。 这就是为什么?请帮我。谢谢

【问题讨论】:

  • npmjs.com/package/react-router-dom你是否安装正确并列在你的package.json中?
  • 你能把你的代码直接放到你的问题中吗?
  • "dependencies": { "antd": "^3.7.3", "less": "^3.8.0", "react": "^16.4.1", "react-dom ": "^16.4.1", "react-scripts-ts": "2.16.0"}, "devDependencies": { "@types/history": "^4.7.0", "@types/jest": “^23.3.0”、“@types/react”:“^16.4.7”、“@types/react-dom”:“^16.0.6”、“@types/react-router-dom”:“^ 4.3.0”、“babel-preset-es2015”:“^6.24.1”、“babel-preset-react”:“^6.24.1”、“less-loader”:“^4.1.0”、“react -app-rewire-less”:“^2.1.2”,“react-app-rewired”:“^1.5.2”,“ts-import-plugin”:“^1.5.4”,“typescript”:“ ^2.9.2"}
  • 只需运行“npm i react-router-dom”然后重启服务器,它对我有用。

标签: reactjs typescript react-router-dom


【解决方案1】:

从反应路由器文档看来,重定向是反应路由器import { Route, Redirect } from 'react-router'的一部分

【讨论】:

  • 我在这里使用 react-router-dom
  • 所有问题都解决了,谢谢大家的帮助;因为我在@types中安装了这个包,所以这个node_modules不是react-router-dom
【解决方案2】:

如果你已经安装了react-router-dom 包,那么你需要为 react-router-dom 定义 Typescript。安装@types/react-router-dom 包。所以要么:

npm install @types/react-router-dom --save

或:

yarn add @types/react-router-dom

【讨论】:

    【解决方案3】:

    必须安装路由器,我使用以下命令解决了安装问题:

    npm i react-router-dom --save
    

    【讨论】:

    • 补充一点,--save 标志也将修改您的package.json/package-lock.json 文件,因为它会保存npm 正在安装的任何新软件包的信息(或更新如果其中存在旧版本,则将包的版本)复制到 JSON 文件中。
    【解决方案4】:

    在app工作目录下cd然后运行:npm install @reach/router

    【讨论】:

    • 那个包不存在。
    猜你喜欢
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2019-03-11
    • 2020-04-07
    • 2016-10-24
    • 1970-01-01
    相关资源
    最近更新 更多