gpt4 book ai didi

haskell - 帮助运行 Yesod 开发服务器?

转载 作者:行者123 更新时间:2023-12-04 18:35:50 26 4
gpt4 key购买 nike

我目前正在试用haskell 的Web 开发框架,最近遇到了yesod .它看起来很有趣,所以我使用 cabal 安装了它,但是我无法运行开发服务器。按照他们的入门说明,结果如下:

$ yesod init
$ cd mysite
$ yesod devel

Configuring mysite-0.0.0...
Testing files...
Rebuilding app
yesod: bind: resource busy (Address already in use)
Preprocessing library mysite-0.0.0...
Preprocessing executables for mysite-0.0.0...
Building mysite-0.0.0...

Controller.hs:16:7:
Could not find module `Data.Dynamic':
It is a member of the hidden package `base'.
Perhaps you need to add `base' to the build-depends in your .cabal file.
It is a member of the hidden package `base-3.0.3.2'.
Perhaps you need to add `base' to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
Testing files...
Testing files...
^^ above line just keeps repeating...

我假设它与 Data.Dynamic 模块有关,但我不知道如何修复它。

附加信息

运行 Ubuntu 10.10 Maverick

ghc版本:
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.1

最佳答案

我还没有遇到这个特定的问题,但错误消息看起来像是一个简单的问题,即 GHC 无法找到版本 3.0.3.2 的包“基础”。这个版本从 GHC 6.9 开始就可以构建了,所以你应该拥有它。尝试运行以下命令:

ghc-pkg check

这将告诉您您的包裹是否有问题。 Cabal 对依赖项来说可能是一场噩梦——部分原因似乎是因为许多 Haskell 开发人员低估了他们的底层库在 future 的变化程度。因此,他们会将依赖项定义为“>= [包 x 版本]”,而不会将最大版本限制为当前可用的版本。或者他们只是完全忽略了版本限制。

Yesod,我很高兴地说,没有落入这个陷阱。但是它所依赖的几个库确实如此。当您开始使用 Haskell 进行开发时,请学习这一课:永远不要假设 future 版本的库不会破坏您的代码。他们会的。很多。

如果 ghc-pkg 出现损坏的软件包,您可能需要清理/卸载/重新安装这些软件包,直到它们被清理或隐藏。 (只需执行 ghc-pkg hide [package name] 告诉 ghc 忽略该包。

你的下一个问题是隐藏的基础包。尝试以下操作:
ghc-pkg list | grep base

如果您在库周围看到括号,则表示它已隐藏。软件包 base-3.0.3.2 可能会显示为隐藏(尽管这不太可能,因为这是向后兼容的 Prelude 所在的位置)。如果它被隐藏,请尝试使用以下命令取消隐藏它:
ghc-pkg expose base-3.0.3.2

现在尝试重新运行 yesod devel看看情况如何。最好的情况是它有效。如果没有,请告诉我们。

关于haskell - 帮助运行 Yesod 开发服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6215556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com