【问题标题】:Deploy job throw "react-router"' has no exported member 'PartialRouteObject部署作业抛出 \"react-router\"\' 没有导出成员 \'PartialRouteObject
【发布时间】:2022-08-22 01:55:27
【问题描述】:
我正在尝试通过 Github CI/CD 将 React 项目部署到 Azure 静态 WebApp。但是,Github 在我的本地安装中抛出构建错误不可见。我在本地尝试过yarn run build and yarn run 没有任何问题,但是Github 一直在抱怨以下错误Module \'\"react-router\"\' has no exported member \'PartialRouteObject\'. TS2305 在线:
import { PartialRouteObject } from \'react-router\';
package.js 有这个参考\"react-router-dom\": \"6.0.0-beta.0\", 知道如何解决这个问题吗?
标签:
reactjs
github
gitlab-ci
【解决方案1】:
当我将 react-router-dom 升级到版本 6 时,我遇到了同样的问题。我通过用 RouteObject 替换 PartialRouteObject 解决了这个问题。
import { RouteObject } from 'react-router';
【解决方案2】:
我在"react-router-dom": "6.0.0-beta.0" 遇到了同样的问题,经过研究,我在node_modules/react-router/README.md 中找到了提示。
If you're using React Router, you should never `import` anything directly from
the `react-router` package, but you should have everything you need in either
`react-router-dom` or `react-router-native`. Both of those packages re-export
everything from `react-router`.
If you'd like to extend React Router and you know what you're doing, you should
add `react-router` **as a peer dependency, not a regular dependency** in your
package.
因此我确实添加到package.json
"peerDependencies": {
"react-router": "6.0.0-beta.0"
},
并从终端运行npm i 以使更改生效。
您可能还需要禁用 eslint,因为在我的情况下它仍然会抱怨并使 CI/CD 管道失败。
// eslint-disable-next-line import/named
import {PartialRouteObject} from 'react-router'
在撰写本文时,值得注意的是,您可以升级到最新版本的react-router v6.3 并摆脱这个问题。但在我们的例子中,我们不能,因为在 v6.0.0-beta.0 中有一些功能在 v6.3 中仍然无法提供,例如https://github.com/remix-run/react-router/issues/8139
希望能帮助到你。快乐编码!