我对Haskell相对较新,来自F#(一种微软语言).
我已经从脚手架创建了一个Yesod项目,玩了一下,调整了一些东西,然后它停止工作,这个错误消息(在所有模块成功构建之后):
devel.hs: D:\yesod\projects\test101\dist\build\HStest101-0.0.0.o: unknown symbol `___stginit_test101zm0zi0zi0_HandlerziPage_'
devel.hs: devel.hs: unable to load package `test101-0.0.0'
Exit code: ExitFailure 1
Run Code Online (Sandbox Code Playgroud)
通过直接使用阴谋(cabal build,cabal install,dist\build\test101\test101)我是能够运行应用程序,但是这实在是烦人.
我能做什么?
谢谢!
我正在关注yesod wiki上的yesod教程,并点击链接到外部css框架(蓝图)的墙.
我使用脚手架工具创建了网站,到目前为止,所有内容都使用'yesod devel'正常工作.
我已将蓝图文件下载到static/css/blueprint中,并将以下内容添加到default-layout-wrapper.hamlet:
!!!
<html>
<head
<title>#{pageTitle pc}
<link rel=stylesheet type=text/css media=screen href=@{StaticR css_blueprint_screen_css}>
<link rel=stylesheet type=text/css media=print href=@{StaticR css_blueprint_print_css}>
^{pageHead pc}
<body
^{pageBody pc}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Foundation.hs:98:27:
Not in scope: `css_blueprint_screen_css'
In the result of the splice:
$(hamletFile "hamlet/default-layout-wrapper.hamlet")
To see what the splice expanded to, use -ddump-splices
In the first argument of `hamletToRepHtml', namely
`$(hamletFile "hamlet/default-layout-wrapper.hamlet")'
In the expression:
hamletToRepHtml
($(hamletFile "hamlet/default-layout-wrapper.hamlet"))
Foundation.hs:98:27:
Not in scope: `css_blueprint_print_css'
In the result of the splice:
$(hamletFile "hamlet/default-layout-wrapper.hamlet")
To see …Run Code Online (Sandbox Code Playgroud) 我正在调试在Yesod中生成的一些JavaScript代码.Yesod在一行中生成包含每个函数的javascript文件,这使得无法在函数内设置断点.有没有办法改变这种行为,以便javascript保留格式化调试?
在yesod中,我们可以像这样指定class属性:
<div .myclass> ==> <div class="myclass">
Run Code Online (Sandbox Code Playgroud)
是否有id的模拟?例如,类似于:
<div #id> ==> <div id="id">
Run Code Online (Sandbox Code Playgroud) 我想测试用户是否经过身份验证,并根据状态显示"登录"或"注销"链接.
到目前为止我有
$maybe muid <- maybeAuthId
<a href=@{AuthR LogoutR} >Logout
$nothing
<a href=@{AuthR LoginR} >Login
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
Couldn't match expected type `Maybe v0'
with actual type `GHandler s0 m0 (Maybe (AuthId m0))'
In the first argument of `Text.Hamlet.maybeH', namely `maybeAuthId'
Run Code Online (Sandbox Code Playgroud) 假设我有fooIds :: [Key Foo].我怎么会得到foos :: [Foo]?
我试过了
do
foos <- map get fooIds
Run Code Online (Sandbox Code Playgroud)
但它给了我
No instance for (MonadBaseControl IO m0)
arising from a use of `get'
Run Code Online (Sandbox Code Playgroud)
我假设因为我需要使用runDB.但我不太确定如何使用它.
我开始开发一个应用程序(一些无聊的会计软件供内部使用),并决定将其设置为基于Web的,因为这可以一次性解决几个问题.
现在有几个用于Haskell的webframeworks可供选择(happstack,yesod和snap),我仍然开始感到痛苦,不得不处理HTML,CSS和非常聪明的有线JavaScript.
嗯.
那么我认为可能会尝试使用所有AJAX方式并在Cappuccino或SproutCore中执行UI .(SEO不是问题).
但是现在我真的不需要一个完整的Web框架,比如上面三个中的一个,一个可以提供JSON或XML包装的数据的HTTP服务器在理论上应该足够了.
现在还有一点可以使用这三者中的任何一个吗?
最重要的是这种方法的可行性如何?
半滑舌鳎
我知道我可以输入端口号,config/settings.yml但在运行时它们似乎被忽略了yesod devel.
我正在尝试将yesod平台更新到最新版本.为此,我执行了以下命令:
cabal update
cabal install yesod-platform yesod-bin
Run Code Online (Sandbox Code Playgroud)
我最终得到以下错误:
Resolving dependencies...
Configuring language-javascript-0.5.13...
cabal: The program alex version >=3.0.5 is required but the version found at /usr/bin/alex is version 3.0.1
cabal: Error: some packages failed to install:
hjsmin-0.1.4.6 depends on language-javascript-0.5.13 which failed to install
language-javascript-0.5.13 failed during the configure step. The exception was:
ExitFailure 1
yesod-platform-1.2.12.2 depends on language-javascript-0.5.13 which failed to install
yesod-static-1.2.4 depends on language-javascript-0.5.13 which failed to install
Run Code Online (Sandbox Code Playgroud)
经过一番研究后,我偶然发现了以下帖子,其中提到我应该在执行cabal install yesod-platform yesod-bin命令之前手动安装一些依赖项.这些依赖包括alex …
这个问题更能帮助我理解Yesod而不是其他任何东西.以http://www.yesodweb.com/book/basics为例,特别是mkYesod TH函数生成的代码.
我认为的问题是这个TH生成路由数据类型(数据路由HelloWorld = HomeR)和调用getHomeR等的yesodDispatch函数.
难点在于,在较大的项目中,您不能将getHomeR的定义拆分为单独的模块,因为Haskell的简单模块系统是严格分层的; 因此,如果getHomeR简称getHomeRimplementation这是在另一个模块中定义(比如HomeImplementation),那么该模块将需要导入的定义数据路由的HelloWorld和将有循环依赖关系.
在我看来,如果可以在单独的模块中声明RenderRoute,ParseRoute和YesodDispatch实例,则可以避免这种情况; 然后RenderRoute可以位于导入层次结构的底部,而YesodDispatch位于顶部.那有意义吗 ?也许我问这个问题的事实表明我对mkYesod TH 不了解 ; 例如,存在一些重要的相互关系,它们不应该分开.