this post에 따라 scotty로 정적 파일을 제공하려고합니다.Network.Wai.Middleware에서 유형이 일치하지 않습니다.
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Network.Wai.Middleware.Static
import Data.Monoid (mconcat)
main = scotty 3000 $ do
middleware $ staticPolicy (noDots >-> addBase "static")
get "/:word" $ do
beam <- param "word"
html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]
가 GHC를 실행하면 다음과 같은 오류를 얻을 :
server.hs:9:16:
Couldn't match type `Network.Wai.Internal.Request'
with `wai-1.4.0.1:Network.Wai.Request'
Expected type: wai-1.4.0.1:Network.Wai.Middleware
Actual type: Network.Wai.Middleware
In the return type of a call of `staticPolicy'
In the second argument of `($)', namely
`staticPolicy (noDots >-> addBase "static")'
In a stmt of a 'do' block:
middleware $ staticPolicy (noDots >-> addBase "static")
가 지금은 Network.Wai.Middleware
대 wai-1.4.0.1:Network.Wai.Middleware
을 해석하는 방법을 이해하지 않습니다 그래서 나는이 작은 스크립트가 있습니다. 버전 문제입니까? 설치된 라이브러리를 검사 해봤지만 충돌이 없습니다.
이 문제를 해결하려면 어떻게해야합니까?
편집
ghc-pkg list wai
을 실행하면 나에게 제공합니다
C:\perso\prog\haskell\orgmode\orgmodeserver\src\hs>ghc-pkg list wai
WARNING: there are broken packages. Run 'ghc-pkg check' for more details.
C:/Program Files (x86)/Haskell Platform/2013.2.0.0\lib\package.conf.d:
C:\Users\sberg\AppData\Roaming\ghc\i386-mingw32-7.6.3\package.conf.d:
wai-1.4.0.1
wai-2.0.0
은 (경고의 무리를 건너 뛰는) ghc-pkg check
실행 :
The following packages are broken, either because they have a problem
listed above, or because they depend on a broken package.
scion-browser-0.2.17
miamtime-0.0.0
TestYes-0.0.0
yesod-platform-1.2.2
yesod-1.2.1.1
yesod-auth-1.2.0.2
yesod-form-1.3.0.1
이것은 버전 문제와 유사합니다. 'ghc-pkg list wai'의 결과는 무엇입니까? – user2407038
@ user2407038 내 편집을 참조하십시오. 2 개의 wai lib가 설치되어 있다는 의미입니까? – Simon
정확하게. 이 문제를 해결할 수있는 방법은 십여 가지가 있지만 가장 간단한 해결책은 깨진 패키지를 모두 등록 해제하고 두 버전의 'wai'를 등록 해제하고 모든 패키지를 다시 설치하여 두 버전의 'wai'를 설치하지 않도록하는 것입니다. 'cabal install '이 이전 버전을 설치하지 않도록'--dry-run' 플래그를 사용하십시오. 1.4가 필요하고 2.0을 사용할 수 없다고 판단되면 이전 버전의 일부 패키지를 사용해야 할 수도 있습니다. – user2407038