Nic*_*año 4 haskell yesod haskell-stack
我知道这似乎与找不到模块 `Yesod'重复,但与该用户不同,ghc-pkg list它没有显示Yesod在我计算机上的输出中,他们似乎没有使用stack(我是,我不确定是否意味着我不需要担心ghc-pkg list),此外,该问题的答案(代码)对我的情况没有帮助。
该耶索德书有一个例子,我一直试图去工作了好几个小时了。我会在这里重印
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Yesod
data HelloWorld = HelloWorld
mkYesod "HelloWorld" [parseRoutes|
/ HomeR GET
|]
instance Yesod HelloWorld
getHomeR :: Handler Html
getHomeR = defaultLayout [whamlet|Hello World!|]
main :: IO ()
main = warp 3000 HelloWorld
Run Code Online (Sandbox Code Playgroud)
我使用的是最新的 64 位 Ubuntu 操作系统。我一直遇到的问题是它runhaskell hello-world.hs会一次又一次地回来
hello-world.hs:6:18:
Could not find module `Yesod'
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)
同样,当我module向文件添加名称并尝试使用stack ghci hello-world.hs. 我使用的是stack要构建的东西,我尝试了许多不同的迭代stack new(与耶索德模板),stack init和stack build的左,右,用stack update的在这里和那里的好办法,甚至少数cabal install的,随着Yesod 快速入门指南的全部内容都无济于事,并且都在正确的目录中。
当我将 Yesod 模板与 一起使用时simpleSQL,模板站点会正确加载,而且我正在使用的一个更大的项目Snowdrift也会运行(尽管作为站点,使用stack exec yesod devel而不是runhaskell FILE命令;但它仍然有效,并且我已经尝试了完全相同的构建过程来处理hello-world.hs上面的文件。
我觉得这个问题有一个我缺少的简单解决方案,但我已经尝试过,尝试过,到处搜索,但我还没有找到答案。
感谢一群人抽出时间来帮助我。
runhaskell hello-world.hs并且ghc-pkg list将默认使用全局系统和用户包数据库(即 cabal-instal 通常使用的那些),而不是堆栈使用的快照和项目特定的数据库(另请参阅:为什么不堆栈将包添加到ghc 包数据库?)。您应该改为使用stack runghc hello-world.hsand stack exec -- ghc-pkg list。堆栈命令确保 GHC 工具使用适当的包数据库(以及适当版本的 GHC,以防您需要stack setup使用与系统范围内安装的 GHC 不同的 GHC)。