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

Stack项目添加extra-deps失败:Acme.Missiles模块找不到求助

嘿,这个问题其实是新手用Stack搭建Haskell项目时很容易踩的两个小坑,我帮你拆解清楚:

为什么会出现这个矛盾情况?

1. 核心问题:你漏了在cabal文件里声明项目依赖

Stack的extra-deps字段只是告诉Stack:「如果这个包不在当前resolver对应的Stackage快照里,就额外下载它」,但这不等于把这个包设为你的项目依赖。编译器要找到Acme.Missiles模块,必须在你的项目.cabal文件(比如project1.cabal)的build-depends里明确声明这个包。

2. stack solver建议删除extra-deps的原因

你的当前resolver对应的Stackage快照里大概率已经包含了acme-missiles包,所以Stack认为你手动添加的extra-deps是多余的,因此建议删除。你可以用这个命令验证:

stack query packages | grep acme-missiles

如果能输出这个包的版本信息,就说明它已经在默认包集中了。

解决步骤

第一步:修改cabal文件添加依赖

打开你的project1.cabal,找到executable project1区块,在build-depends里加入Acme.Missiles:

executable project1
  main-is:             Main.hs
  build-depends:       base >= 4.14 && < 5,
                       Acme.Missiles  # 新增这一行
  hs-source-dirs:      app
  default-language:    Haskell2010

第二步:调整extra-deps配置

  • 如果之前的stack query命令查到了acme-missiles,就按照solver的建议,删除stack.yaml里的extra-deps: - acme-missiles-0.3;
  • 如果没查到,说明这个包不在当前resolver的快照里,保留extra-deps的配置即可(确认版本号0.3是正确的)。

第三步:重新构建项目

运行以下命令,之后就能正常导入并使用launchMissile了:

stack build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:37