我按照这里列出的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。
答案 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