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

Cabal构建本地依赖报错:组件不存在/无可用库组件

Haskell Cabal本地依赖库找不到组件问题解决

核心问题排查与修复步骤

  • 检查依赖库的Cabal配置是否包含library块
    Cabal只会将library stanza定义的内容识别为可依赖的库组件。如果你的trisagion.cabal只有executable/test-suite等块,没有library块,就会触发“does not contain library”错误。
    解决方法:在trisagion.cabal中添加library块,将需要被eeep依赖的类型类、模块暴露出来,示例如下:

    library
      exposed-modules:  Trisagion.YourTargetModule  -- 替换为实际要暴露的模块名
      build-depends:    base >=4.16 && <5
      hs-source-dirs:   src  -- 对应你的库代码目录
      default-language: Haskell2010
    
  • 确认库名与依赖声明完全一致
    确保trisagion.cabal的library块中name字段严格为trisagion,和eeep的build-depends中的依赖名完全匹配(大小写、拼写均不能出错)。

  • 验证cabal.project的路径配置
    在eeep目录的cabal.project中,必须正确引入trisagion的本地路径,正确写法示例:

    packages: . ../trisagion
    

    或者明确指定包位置:

    package trisagion
      location: ../trisagion
    
  • 先单独构建依赖库
    进入trisagion目录执行cabal build,确保其library组件能正常构建,排除自身的语法或配置错误。

额外注意事项

  • 避免本地库名与Hackage上的库重名:之前的bins问题就是因为Hackage已有同名库,Cabal可能优先尝试拉取远程版本而非本地版本,重命名为trisagion是正确操作,但必须补全library配置。
  • 清理缓存:如果存在旧缓存干扰,可执行cabal clean后重新构建。

内容的提问来源于stack exchange,提问作者G. Rodrigues

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:01:10