Yesod css - 不在范围变量中

时间:2015-10-11 17:34:07

标签: haskell yesod

我从模板初始化Yesod项目。 在Foundation.hs尝试更改css变量时出现错误

$ stack new s1 yesod-simple
$ cd s1
$ mv static/css/bootstrap.css static/css/style.css

更改 Foundation.hs

pc <- widgetToPageContent $ do
    addStylesheet $ StaticR css_bootstrap_css
    $(widgetFile "default-layout")

     pc <- widgetToPageContent $ do
         addStylesheet $ StaticR css_style_css
         $(widgetFile "default-layout")

$ stack build
...
[4 of 8] Compiling Foundation       ( Foundation.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/Foundation.o )

Foundation.hs:64:37: Not in scope: ‘css_style_css’

但正如我所知,在编译时css_style_css应该会自动出现。 我做错了什么?如果我们需要将几个css文件添加到默认布局,我该怎么办?

2 个答案:

答案 0 :(得分:4)

来自Yesod tutorial

  

每当您修改静态文件夹时,请触摸StaticFiles.hs和您   应该很高兴。

     

因此,在控制台中运行此命令:

     

touch Settings/StaticFiles.hs

需要编译StaticFiles.hs文件才能获得css_style_css定义。如果您修改静态文件夹,此文件与文件夹内容不同步,但GHC / Stack无意找到。

答案 1 :(得分:1)

  1. 打开您的Cabal文件
  2. FInd block:
  3. if flag(dev) || flag(library-only)
        cpp-options:   -DDEVELOPMENT
        ghc-options:   -Wall -fwarn-tabs -O0
    else
        ghc-options:   -Wall -fwarn-tabs -O2
    

    并将 -fforce-recomp 添加到 ghc-options 以获取所需的行。