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

安装Haskell的Threepenny GUI时snap-core构建失败求助

解决snap-core编译时parseTime不在作用域的问题

问题根源

你遇到的是snap-core 1.0.5.0版本与新版time包API不兼容的问题:time包在较新版本中移除了parseTime函数,替换为parseTimeM,但旧版snap-core仍在调用已废弃的parseTime,导致编译报错。

解决思路

1. 指定兼容的time包版本

在你的stack.yaml文件中添加extra-deps,强制使用保留parseTime的旧版time包:

extra-deps:
  - time-1.9.3

添加后执行stack build,Stack会拉取指定版本的time包,配合旧版snap-core完成编译。

2. 升级snap-core到兼容版本

如果Threepenny GUI的依赖约束允许,将snap-core升级到1.0.5.1及以上版本——这些版本已经修复了API调用,改用parseTimeM。修改你的项目依赖配置(cabal文件或stack.yaml),指定:

# stack.yaml中示例
packages:
  - .
extra-deps:
  - snap-core-1.0.5.1

之后重新运行stack build。

3. 手动修改snap-core源码(应急方案)

如果前两种方法不可行,直接修改snap-core的源码:

  1. 找到Stack下载的snap-core源码目录(通常在.stack-work/downloaded/对应的路径下)
  2. 打开src/Snap/Internal/Http/Types.hs,定位到第1285行
  3. 将parseTime替换为parseTimeM,并补充第一个参数(是否允许宽松解析):
    prs = parseTimeM True defaultTimeLocale "%a, %d %b %Y %H:%M:%S GMT"
    
  4. 保存后重新执行stack build

错误详情:

snap-core      > configure
snap-core      > Configuring snap-core-1.0.5.0...
snap-core      > build
snap-core      > Preprocessing library for snap-core-1.0.5.0..
snap-core      > Building library for snap-core-1.0.5.0..
snap-core      > [ 1 of 18] Compiling Snap.Internal.Debug
snap-core      > [ 2 of 18] Compiling Snap.Types.Headers
snap-core      > [ 3 of 18] Compiling Snap.Internal.Http.Types
snap-core      > 
snap-core      > src\\Snap\\Internal\\Http\\Types.hs:1285:11: error:
snap-core      >     * Variable not in scope:
snap-core      >         parseTime :: TimeLocale -> t0 -> String -> Maybe UTCTime       
snap-core      >     * Perhaps you meant `parseTimeM' (imported from Data.Time.Format)  
snap-core      >      |
snap-core      > 1285 |     prs = parseTime defaultTimeLocale "%a, %d %b %Y %H:%M:%S GMT"
snap-core      >      |           ^^^^^^^^^
Progress 1/4

--  While building package snap-core-1.0.5.0 (scroll up to its section to see the error) using:
      C:\\Users\\User\\AppData\\Roaming\\stack\\setup-exe-cache\\x86_64-windows\\Cabal-simple_Z6RU0evB_3.6.3.0_ghc-9.2.5.exe --verbose=1 --builddir=.stack-work\\dist\\8a54c84f build --ghc-options " -fdiagnostics-color=always"
    Process exited with code: ExitFailure 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:50:43