4

これはCould not find module `Yesod'と重複しているように見えますが、そのユーザーとは異なり、コンピューターの出力にghc-pkg list表示されません。を心配する必要がないことを意味します)、さらに、その質問に対する回答(コード)は私の状況を助けませんでした。Yesodstackghc-pkg list

Yesod Bookには、私が数時間仕事に取り掛かろうとしている例があります。こちらに転載させていただきます

{-# LANGUAGE OverloadedStrings     #-}
{-# LANGUAGE QuasiQuotes           #-}
{-# LANGUAGE TemplateHaskell       #-}
{-# LANGUAGE TypeFamilies          #-}
import           Yesod

data HelloWorld = HelloWorld

mkYesod "HelloWorld" [parseRoutes|
/ HomeR GET
|]

instance Yesod HelloWorld

getHomeR :: Handler Html
getHomeR = defaultLayout [whamlet|Hello World!|]

main :: IO ()
main = warp 3000 HelloWorld

最新の 64 ビット Ubuntu OS を使用しています。私が常に遭遇する問題は、runhaskell hello-world.hs何度も何度も戻ってくることです

hello-world.hs:6:18:
    Could not find module `Yesod'
    Use -v to see a list of the files searched for.

module同様に、ファイルに名前を追加して、 stack ghci hello-world.hs. 私はstack物事を構築するために を使用しており、(yesod テンプレートを使用して) のさまざまな反復をstack new試しました。Yesod クイックスタート ガイドの全体、すべてが役に立たず、すべてが適切なディレクトリ内にあります。stack initstack buildstack updatecabal install

で Yesod テンプレートを使用するとsimpleSQL、テンプレート サイトが適切に読み込まれ、さらに、私が使用しているはるかに大きなプロジェクトであるSnowdriftstack exec yesod develも実行されます (コマンドではなくサイトとして使用されrunhaskell FILEますが、それでも機能し、hello-world.hs上記のファイルを処理するために、まったく同じビルドプロセスを試しました。

この問題には、私が見逃している簡単な解決策があるように感じますが、試してみて、あちこち検索しましたが、答えに出くわしていません。

私を助けるために時間を割いてくれてありがとう。

4

2 に答える 2

1

結果は異なる場合がありますが、これは私にとってはうまくいきました(2018年1月13日):

  • Mac OS 10.13.2 (ハイシエラ)
  • Yesod の Hackage を検索し、https: //hackage.haskell.org/package/yesod-1.4.5/docs/Yesod.html で 1.4.5 を見つけました
  • スタック インストール yesod-1.4.5
  • 依存関係エラーが発生し、conduit-extra-1.1.13.1 を extra-deps (~/.stack/global/stack.yaml 内) に追加するよう提案されました。
  • 再試行しました。より多くの依存関係エラーが発生し、その結果、次のようになりました。
  • extra-deps: ["gtk-mac-integration-0.3.4.0","conduit-extra-1.2.3.2","conduit-1.2.13","streaming-commons-0.1.18","typed-process- 0.2.1.0","unliftio-core-0.1.1.0"] (別の推奨事項を取得する場合があります。私は取得したものに従っただけです。注: 開始する前に gtk-mac-integration extra-dep を既に持っていました)。
  • yesod-1.4.5 のスタックインストールに成功
  • スタック runghc helloworld.hs
  • 成功!

後から考えると、モジュール「Yesod」がまだインストールされていなければ見つからないことは明らかです。私は通常、スタックで作成された Haskell プロジェクト内で作業します。その場合、依存関係が存在することを確認するために通常の手順を実行します。通常、「stack runghc」でアプリケーションを実行することはありません。

于 2018-01-14T00:10:38.837 に答える