【问题标题】:"Yesod devel" fails with fromJust in devel.hs“Yesod devel”在 devel.hs 中使用 fromJust 失败
【发布时间】:2012-01-24 23:59:17
【问题描述】:

当我运行“yesod devel”时,它显示“devel.hs: Maybe.fromJust: Nothing

yesod init # created a project bbbb
...
cabal install && yesod devel
...
Registering bbbb-0.0.0...
Starting development server...
Starting devel application
devel.hs: Maybe.fromJust: Nothing

并且网络服务器没有监听端口(我无法在浏览器中打开该站点)

有谁知道如何解决这个问题?

我的环境:

  • 是的-0.9.4.1
  • Glorious Glasgow Haskell 编译系统,版本 7.0.3
  • Mac OS X 10.6.8

这里是 dist/devel.hs,由“yesod init”创建:

{-# LANGUAGE PackageImports #-}
import "bbbb" Application (withDevelAppPort)
import Data.Dynamic (fromDynamic)
import Network.Wai.Handler.Warp
    (runSettings, defaultSettings, settingsPort, settingsHost)
import Data.Maybe (fromJust)
import Control.Concurrent (forkIO)
import System.Directory (doesFileExist, removeFile)
import System.Exit (exitSuccess)
import Control.Concurrent (threadDelay)

main :: IO ()
main = do
  putStrLn "Starting devel application"
  wdap <- (return . fromJust . fromDynamic) withDevelAppPort
  forkIO . wdap $ \(port, app) -> runSettings defaultSettings
    { settingsPort = port
    , settingsHost = "0.0.0.0"
    } app
  loop

loop :: IO ()
loop = do
  threadDelay 100000
  e <- doesFileExist "dist/devel-terminate"
  if e then terminateDevel else loop

terminateDevel :: IO ()
terminateDevel = exitSuccess

我上传了 bbbb 目录中的所有文件,Application.hs 是 https://github.com/suztomo/LanguageStudy/blob/master/Haskell/Yesod/bbbb/Application.hs.

【问题讨论】:

  • 可以把devel.hs的内容加进去吗?对我来说,这听起来像是 Yesod 中的一个错误。
  • 谢谢,我添加了 dist/devel.hs。
  • 天哪;现在它在Application.hs 中看起来像一个问题:)
  • withDevelAppPort 应该看起来像(将“Webapp”替换为您的基础数据类型):withDevelAppPort = toDyn $ defaultDevelAppWith loader withWebapp; where loader = loadConfig (configSettings Development) { csParseExtra = parseExtra }
  • 这是dist/devel.hs 文件预期的类型与您的yesod-defaultApplication.hs 版本不匹配。这比它应该的要复杂得多。感谢这个问题,这个问题将在 Yesod 0.10 中修复。

标签: haskell yesod


【解决方案1】:

在黑暗中的答案:检查你正在使用 yesod-default 0.5 的 cabal 文件。

【讨论】:

  • 我正在使用 yesod-default... , yesod-default >= 0.5 &&
  • 啊……另一个想法:你安装了 WAI 1.0 吗?这可以引入不同版本的Application 类型。
  • 我尝试使用 wai 1.0 但 yesod-default-0.5 需要 wai 0.4.*。 hackage.haskell.org/package/yesod-default-0.5.0我该如何解决这个...?
  • 对不起,我不清楚:这就是问题的根源。尝试注销wai 1.0,它会引起麻烦。
  • 注册wai-1.0.0后,成功了!非常感谢。
猜你喜欢
  • 2020-04-21
  • 1970-01-01
  • 2015-02-13
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 2023-03-07
相关资源
最近更新 更多