- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个列出给定目录内容的网页,但我遇到了一个奇怪的问题:当我在 GHCi 中逐行运行代码时,代码会产生所需的输出,但是当它被执行时在正在运行的 Scotty 实例中,它会产生不同的(错误的)输出。这是代码的相关部分:
serveDir :: String -> ActionM ()
serveDir p = do let path = prefix ++ p
entries <- liftIO $ getDirectoryContents path
fs <- liftIO $ filterM (doesFileExist . ((++) prefix)) entries
ds <- liftIO $ filterM (doesDirectoryExist . ((++) prefix)) entries
liftIO $ print path >> print entries >> print fs >> print ds
blaze $ renderDir fs ds
where prefix = "static/"
(do
语句中的最后一行只是将其呈现为 html。这有效,但正确的输出永远不会到达该函数)当我在 GHCi 中运行这个函数的每一行时,我得到以下输出:
*Main> entries <- getDirectoryContents "static/stuff"
*Main> fs <- liftIO $ filterM (doesFileExist . ((++) "static/stuff/")) entries
*Main> ds <- liftIO $ filterM (doesDirectoryExist . ((++) "static/stuff/")) entries
*Main> liftIO $ print entries >> print fs >> print ds
["..","hello","bye","someDir","."]
["hello","bye"]
["..","someDir","."]
这正是我所期待的。但是当这个函数从 Scotty 运行时,称为 serveDir "stuff/"
,我得到这个输出:
"static/stuff/"
["..","hello","bye","someDir","."]
[]
["..","."]
这里发生了什么?我知道 ActionM 是 MonadIO 的一个实例,否则无法编译。我有点不知所措。有人可以对此有所了解或提出建议吗?其余代码可根据要求提供,但我可以说我正在使用 wai-middleware-static 来允许静态文件请求,并且其他函数中来自该目录的其他文件请求有效。
最佳答案
fs <- liftIO $ filterM (doesFileExist . ((++) prefix)) entries
不应该是 (++) 路径
吗?
关于haskell - 为什么这在 GHCi 中有效但在 Scotty 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31055102/
和: mailHandler = do name <- param "name" email <- param "email" renderSendMail $ forwardMail
我目前正在制作 Scotty API,但找不到任何 basicAuth 实现示例(Wai Middleware HttpAuth)。 具体来说,我想向我的某些端点(即以“admin”开头的端点)添加基
我收到一个 GET 请求并想发送一条文本消息作为对它的响应。我有以下代码但收到以下错误 {-# LANGUAGE OverloadedStrings #-} import Web.Scotty imp
我收到一个 GET 请求并想发送一条文本消息作为对它的响应。我有以下代码但收到以下错误 {-# LANGUAGE OverloadedStrings #-} import Web.Scotty imp
我有一个 Scotty/WAI 应用程序,其中一个端点发送了一个大的 Text从元素列表构建的输出。这是相关的代码: import Data.Text.Lazy as L import Dat
包括阅读器在内的数以万亿计的 monad 教程,当您阅读它时似乎一切都清楚了。但是当你真的需要写的时候,就另当别论了。 我从未使用过 Reader,只是在实践中从未使用过。因此,尽管我读过它,但我不知
post "/introduceAnIdea" $ do command >= 更改它? 最佳答案 post "/introduceAnIdea" $ jsonData >>= (j
假设我有一份静态文件,但它们没有扩展名。我想为所有从“some/”提供服务的标题设置标题“Content-Type:image/png”(第一条规则)。如何在这段代码中做到这一点? import Ne
我遇到了一个问题,我的 Scotty 应用程序似乎没有终止旧的 HTTP 请求线程。最终,在大量(10-20)个并发请求之后,我遇到了数据库连接太多的错误 libpq: failed (FATAL:
我正在尝试在 Haskell 中使用 Scotty,按照教程,我可以像这样路由 url: get "/hello/:name" $ do name name <> "!!")
我刚刚开始学习 Haskell,并且一直坚持如何在 Scotty 中处理异常。 我有下面的基本功能。它获取 JSON POST,将其转换为 Haskell 数据记录,从配置读取器获取 postgres
我正在尝试制作一个愚蠢的网络服务器,将数据存储为 State .我正在使用 Web.Scotty . I've used ReaderT before with scotty to access co
考虑最简单的 scotty 应用程序: {-# LANGUAGE OverloadedStrings #-} import Web.Scotty import Data.Monoid (mconcat
我正在尝试创建一个网站,该网站将通过 URL 路由获取信息,然后将此信息传递到 HDBC SQLITE3数据库。我已经弄清楚如何使用 Scotty 通过参数获取信息以及如何使用 HDBC 创建数据库。
我尝试对 Scotty 进行基准测试以测试网络 I/O 效率和整体吞吐量。 为此,我设置了两个用 Haskell 编写的本地服务器。一个什么都不做,只是充当 API 的一种。 相同的代码是 {-# L
我想研究一下使用 haskell 进行后端和 elm 进行前端的 Web 开发。所以我写了这两个简单的“hello world”代码代码片段 榆树: import Html exposing (..)
我正在尝试制作一个列出给定目录内容的网页,但我遇到了一个奇怪的问题:当我在 GHCi 中逐行运行代码时,代码会产生所需的输出,但是当它被执行时在正在运行的 Scotty 实例中,它会产生不同的(错误的
我正在尝试学习 Haskell 中的语句是如何工作的。我试图制作一个非常简单的程序,您可以在其中调用 REST 端点并执行系统命令(非常简单,例如“ls”) 问题在于在单个 do 语句中组合不同的操作
这是我的 scotty 应用程序,请注意我如何将请求记录到控制台: {-# LANGUAGE OverloadedStrings #-} import Web.Scotty import Networ
我目前从 Network.Wai.Middleware.RequestLogger 运行中间件 logStdoutDev,但它只记录路径和 Accept header (也可能是其他 header )
我是一名优秀的程序员,十分优秀!