You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mmark跨目录引用md报错path is not on or below dirname解决方法

问题原因

mmark 自带路径安全校验逻辑,默认只允许访问待解析主文件所在目录及其子目录下的文件,禁止通过../语法向上遍历目录引用外部资源。你当前以template/main.md作为解析入口时,上级目录的paragraphs文件夹不在合法访问路径范围内,因此触发报错。

可行解决方案(无需移动paragraphs文件夹原有位置)
  • 方案1:切换命令执行的工作目录到项目根目录
    不要在template目录内执行转换命令,先进入myproj根目录,再指定主文件路径为template/main.md执行转换,同时调整main.md内的文件引用路径:

    1. 修改template/main.md内容如下:
    {mainmatter}
    
    {{paragraphs/00_abstract.md}}
    {{paragraphs/01_introduction.md}}
    {{paragraphs/02_conclusion.md}}
    
    {backmatter}
    
    1. 在myproj根目录下执行mmark转换命令,此时mmark的路径校验基准为项目根目录,paragraphs目录属于合法访问范围,不会触发路径越权错误。
  • 方案2:在template目录下创建paragraphs的软链接映射
    如果需要保留在template目录下执行命令的使用习惯,可以在template目录内创建指向根目录paragraphs文件夹的软链接,让mmark认为引用资源在当前目录层级内,绕过路径校验:

    1. 进入template目录,根据操作系统执行对应命令创建软链接:
      • Linux/macOS 执行:
      ln -s ../paragraphs ./paragraphs
      
      • Windows (管理员权限打开终端)执行:
      mklink /D paragraphs ..\paragraphs
      
    2. 软链接创建完成后,将main.md内的引用路径改为指向软链接路径即可,写法和方案1中的main.md内容一致。
      该方案仅做路径映射,不会改动paragraphs文件夹的实际存储位置,也不会影响原有文件的目录结构。

内容的提问来源于stack exchange,提问作者EuberDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:21:26