yesod 添加处理程序导致错误

yesod add-handler results in error

我遵循了此处列出的 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

正如问题中所指出的,添加处理程序在脚手架更新中被破坏。

但是,您可以自己添加路线。假设您想在 /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
    
  • 也看你是否需要脚手架提供的认证,将这条路由添加到Foundation.hs

    Yesod App实例的模式列表中
    isAuthorized NewRouteR _ = return Authorized -- No authentication
    -- or --
    isAuthorized NewRouteR _ = isAuthenticated