yesod add-handler导致错误

时间:2017-06-27 01:00:33

标签: haskell web yesod

我按照这里列出的6个步骤http://www.yesodweb.com/page/quickstart(除了第一步,b / c我已经有了堆栈),一切正常。但是,当我尝试运行stack exec -- yesod add-handler时,我得到以下输出:

Name of route (without trailing R): A
Enter route pattern (ex: /entry/#EntryId): /a
Enter space-separated list of methods (ex: GET POST): GET
yesod: Application.hs: openFile: does not exist (No such file or directory)

我也尝试使用yesod-postgres堆栈模板,并得到了相同的结果。有什么想法吗?

编辑:看起来这已经成为一个问题https://github.com/yesodweb/yesod/issues/1413

1 个答案:

答案 0 :(得分:1)

正如问题中所指出的,在脚手架更新中,add-handler被破坏了。

但是,您可以自己添加路线。我们假设您要在/ NewRoute添加GET请求的路由并将资源命名为NewRouteR

  • 在新行中,在config/routes文件中添加新路由

    /NewRoute NewRouteR GET
    
  • 在Handler目录中创建一个新文件 - 使用此默认内容的NewRoute.hs

    module NewRoute where
    import Import
    
    getNewRoute :: Handler Html
    getNewRoute = error "Route not implemented : NewRoute"
    
  • 将此添加到Application.hs

    中的导入列表中
    import Handler.NewRoute
    
  • 还将其添加到.cabal文件中的公开模块列表

    exposed-modules:
        Handler.NewRoute
    
  • 还取决于您是否需要脚手架提供的身份验证,请将此路由添加到Yesod App

    Foundation.hs实例中的模式列表中
    isAuthorized NewRouteR _ = return Authorized -- No authentication
    -- or --
    isAuthorized NewRouteR _ = isAuthenticated