Yesod css - 不在范围变量中

Yesod css - not in scope variable

我从模板初始化 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 文件添加到默认布局,我该怎么办?

来自Yesod tutorial

Whenever you modify your static folder, touch StaticFiles.hs and you should be good to go.

So, run this command in the console:

touch Settings/StaticFiles.hs

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

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

并添加 -fforce-recompghc-options 以获得所需的行。