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

为何Stack无法自动检测模块依赖?Diagrams-SVG导入异常

解决Stack脚本模式下辅助模块依赖未被检测的问题

Stack的--script模式默认仅分析主脚本文件的依赖关系,不会自动递归扫描同目录下其他模块的导入,这就是MyMod.hs里导入Diagrams.Backend.SVG时,Stack未识别到diagrams-svg包需求的原因。以下是几种可行的解决方法:

方法1:在主脚本显式声明依赖包

修改Main.hs顶部的Stack注释,添加--package diagrams-svg参数,强制Stack加载该包:

-- stack --resolver lts-19.0 --package diagrams-svg script

{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE FlexibleContexts          #-}
{-# LANGUAGE TypeFamilies              #-}

import Diagrams.Prelude
import MyMod (val)

main = print val 

(此时主文件里的import Diagrams.Backend.SVG可以移除,依赖已通过参数显式声明)

方法2:运行时指定所有编译文件

执行Stack命令时,把所有需要编译的模块文件都列出来,让Stack扫描所有文件的依赖:

stack runghc --resolver lts-19.0 Main.hs MyMod.hs

方法3:改用标准Stack项目结构

如果你的代码模块较多,建议用stack new创建标准项目结构,Stack会自动扫描所有源文件的依赖,无需手动处理单个脚本的依赖声明。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:05:16