在 React:Module not found: Can't resolve 'react-router-dom'

Posted

技术标签:

【中文标题】在 React:Module not found: Can\'t resolve \'react-router-dom\'【英文标题】: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”然后重启服务器,它对我有用。 【参考方案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

【讨论】:

那个包不存在。

以上是关于在 React:Module not found: Can't resolve 'react-router-dom'的主要内容,如果未能解决你的问题,请参考以下文章

React调试错误‘Module not found: Can‘t resolve‘

[react] Module not found: Can't resolve 'schedule' in 'C:Usersadcaldvmtn7myapp (代码片段

节点 MODULE_NOT_FOUND

[ERR_MODULE_NOT_FOUND] 是啥意思?

问题重新安装纱线 - 代码:'MODULE_NOT_FOUND'

错误:找不到模块,代码:'MODULE_NOT_FOUND',requireStack:[]