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

Monorepo工作区使用Eleventy遇TemplateLayoutPathResolver错误求助

Eleventy报错TemplateLayoutPathResolver directory does not exist for component: _includes 解决方法

问题根源

你的Eleventy配置中,dir.includes的路径是相对于dir.input解析的,而Eleventy的目录配置默认基于运行命令时的工作目录,而非配置文件所在目录。结合你的目录结构:

monorepo
- workspace 2
  - docs
    - _includes
    - pages
    - eleventy.config.cjs

如果运行Eleventy时不在docs目录下,配置里的input: 'pages'会指向错误的路径(比如workspace2/pages而非workspace2/docs/pages),导致includes: '../_includes'解析为不存在的目录,触发报错。

解决方法

方法1:使用绝对路径(推荐,不受运行目录影响)

修改eleventy.config.cjs中的dir配置,利用__dirname(当前配置文件所在目录)生成绝对路径,确保路径解析始终正确:

// ... 其他配置代码 ...
return {
  dir: {
    input: path.resolve(__dirname, 'pages'),    // 指向 docs/pages
    output: path.resolve(__dirname, '../_site'),// 指向 workspace2/_site
    includes: path.resolve(__dirname, '_includes') // 指向 docs/_includes
  },
  markdownTemplateEngine: 'njk',
  templateEngineOverride: ['njk']
};

方法2:固定运行目录

确保运行Eleventy命令时始终在docs目录下执行:

  1. 进入workspace2/docs目录:
    cd monorepo/workspace2/docs
    
  2. 执行Eleventy命令:
    npx @11ty/eleventy
    # 或启动开发服务器
    npx @11ty/eleventy --serve
    

也可以在workspace2/package.json中添加脚本简化操作:

{
  "scripts": {
    "docs:build": "cd docs && npx @11ty/eleventy",
    "docs:serve": "cd docs && npx @11ty/eleventy --serve"
  }
}

之后直接运行npm run docs:build或npm run docs:serve即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:22:05