Javascript React路由器DOM';s路由器没有';我不能正确地接受历史

Javascript React路由器DOM';s路由器没有';我不能正确地接受历史,javascript,reactjs,typescript,react-router,react-router-dom,Javascript,Reactjs,Typescript,React Router,React Router Dom,我一直在尝试创建一个实用函数来包装React测试库的render函数,该函数使用Router来包装整个React元素。代码如下所示 从'react'导入{ReactElement}; 从'@testing library/react'导入{render as rendertl}; 从“react Router dom”导入{Router}; 从“历史”导入{createMemoryHistory,History}; 导出函数渲染(ui:ReactElement){ const history=c

我一直在尝试创建一个实用函数来包装React测试库的
render
函数,该函数使用
Router
来包装整个React元素。代码如下所示

从'react'导入{ReactElement};
从'@testing library/react'导入{render as rendertl};
从“react Router dom”导入{Router};
从“历史”导入{createMemoryHistory,History};
导出函数渲染(ui:ReactElement){
const history=createMemoryHistory();
返回{
历史
…renderRTL({ui}),
};
}
这里的问题是,我一直从TypeScript中得到一条错误消息,说在这一行代码中,
历史记录不可分配给历史记录

…renderRTL({ui}),
这是完整的错误消息

No overload matches this call.
  Overload 1 of 2, '(props: RouterProps | Readonly<RouterProps>): Router', gave the following error.
    Type 'History<State>' is missing the following properties from type 'History<unknown>': length, goBack, goForward
  Overload 2 of 2, '(props: RouterProps, context: any): Router', gave the following error.
    Type 'History<State>' is not assignable to type 'History<unknown>'.ts(2769)
index.d.ts(105, 5): The expected type comes from property 'history' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<Router> & Readonly<RouterProps> & Readonly<{ children?: ReactNode; }>'
index.d.ts(105, 5): The expected type comes from property 'history' which is declared here on type 'IntrinsicAttributes & IntrinsicClassAttributes<Router> & Readonly<RouterProps> & Readonly<{ children?: ReactNode; }>'
问题应该是内存历史记录中缺少
length
goBack
goForward
属性


这是不是因为
react router
本身存在缺陷?

我意外地将
history
安装为开发人员依赖项,这导致类型不兼容。为了解决这个问题,我删除了
history
并重新安装
react-router-dom
,以确保它安装正确。下面介绍如何使用
pnpm

pnpm remove history
pnpm add react-router-dom

我只是将代码复制粘贴到一个新的应用程序中,没有发现任何错误。我将使用your package.json,看看问题是否存在。谢谢,也许我的包有问题。我假设
react router dom
history
的版本不兼容,您也可以卸载
history
react router
并让
react router dom
自行安装正确的版本。谢谢,它实际上工作正常。看起来我确实意外地将
history
安装为开发人员依赖项,这导致类型不兼容。谢谢你帮我,太好了!你应该写一个快速的答案,以防其他人有这个问题。