dumi icon indicating copy to clipboard operation
dumi copied to clipboard

bug: 相对路径解析错误

Open 7kms opened this issue 4 years ago • 6 comments

Versions

  • dumi: 1.0.33
  • node:14.5.0
  • npm: 6.14.5
  • OS:MacOS
  • Browser:

Steps to reproduce

在多级目录中使用相对路径, 无法正确解析.

如有以下目录:

docs
├── index.md
├── main
│   ├── 01.md
│   └── 02.md

01.md中连接到02.md正常会这样使用:

[跳转到02文章](./02.md)

但是实际解析出来的路径是基于根目录的绝对路径

<a href="/02">跳转到02文章</a>, 导致跳转错误

What is Expected?

正常应该是解析成: <a href="/main/02">跳转到02文章</a>

7kms avatar Jul 11 '20 08:07 7kms

从md文件的解析来看, 解析过后的Link组件也是相对路径:

<Link to="./02">跳转到02文章</Link>

最终在运行时被渲染成了<a href="/02">跳转到02文章</a>, 而不是<a href="./02">跳转到02文章</a>.

这是否可能是react-router-dom的问题?

7kms avatar Jul 11 '20 09:07 7kms

dumi 没对直接链接 md 文件的用法做处理,客观上是不支持的,建议直接使用最终确定的链接进行配置

PeachScript avatar Jul 12 '20 16:07 PeachScript

假设为了满足了dumi, 就应该配置成

[跳转到02文章](/main/02.md)

别的浏览工具, 比如直接在github上浏览, 就会造成链接404.

如果要解决的话, 是否可以在将md转换成<Link/>组件的时候将相对路径转成绝对路径.

7kms avatar Jul 13 '20 02:07 7kms

我是指『配文件路径链接到另一个 md』的用法目前是不支持的,如果要链接到另一个 md 的页面,需要配置最终生成的链接地址,比如 /main/02

GitHub 上 md 之间的相互跳转确实是一个常见的场景,后续会进行支持,关键点并非相对路径转换,还需要根据 group 和 nav 的配置去处理链接,如果有时间的话,欢迎给 dumi 提个 PR :D

PeachScript avatar Jul 13 '20 04:07 PeachScript

关键点并非相对路径转换,还需要根据 group 和 nav 的配置去处理链接,如果有时间的话,欢迎给 dumi 提个 PR :D

思路可以再详细一点吗, 上面这一点没有理解透彻.

我理解group 和 nav 是dumi的逻辑分组, 每个分组下的页面, 都对应一个绝对路径.

按理说应该可以不用管dumi逻辑如何分组, 相对路径转换只要解析成<Link to="/xxx"/>绝对路径是正确的, 就不会破坏dumi的路由匹配.

7kms avatar Jul 13 '20 05:07 7kms

比如 src/a.md 的 group.path 配置是 b,那它的最终链接就是 /b/a,如果转换路径不考虑 group 配置、转换成 /a 的话,就访问不到了

PeachScript avatar Jul 13 '20 11:07 PeachScript

dumi v2 已支持 md 相对路径引用,欢迎升级:https://d.umijs.org/guide/upgrading

PeachScript avatar Jan 28 '23 09:01 PeachScript