1

次の問題があり、アプリ プロジェクトghc-modの一部のファイルに ide を使用できません。yesod

次のようにテンプレートアプリをインストールします。

/tmp$ stack new demo yesod-sqlite && cd demo
/tmp/demo$ stack setup && stack build && stack install ghc-mod

次の結果が得られますstack.yaml(コメント行は削除されています):

resolver: lts-5.6
packages:
- '.'
extra-deps: []
flags: {}
extra-package-dbs: []

これはhttp://pastebin.com/i4n1TR6Wdemo.cabalです。

次に、実行stack exec -- ghc-mod check app/main.hsしてもエラーは発生しませんが、次のstack exec -- ghc-mod check app/devel.hsように言えます。

app/devel.hs:2:1:Failed to load interface for ‘Application’It is a member of the hidden package ‘demo-0.0.0’.Perhaps you need to add ‘demo’ to the build-depends in your .cabal file.

ghc-modどういうわけか、このパッケージ自体が隠されていると思いますか? ただし、プロジェクトのファイルが別の場所によってインポートされている他の場所は問題なくチェックされ、アプリケーションは正常にビルドおよび動作します。このファイルに関する唯一の詳細は、PackageImports言語拡張子を使用することです。

{-# LANGUAGE PackageImports #-}
import "demo" Application (develMain)

エラーメッセージをグーグルで調べてみましたが、デバッグ中のパッケージではなく、外部パッケージに関してのみ表示されるようです。

4

1 に答える 1

1

これら 2 つのファイルdevel.hsとは非常に特殊です。これらはinDevelMain.hsのモジュールとしてマークされていますが、コンパイルされたパッケージ、つまり再帰的な依存関係としてインポートされています。demo.cabaldemo

それらはライブラリから公開されておらず、demo他の場所にインポートされていないため、実行時にコンパイルされませんがstack build、実行するghc-mod checkと現在のプロジェクトのコンテキストで解釈されるため、再帰的な依存関係が問題になります。


DevelMain.hsこれら 2 つのファイルの唯一の目的は、コメントで述べられているように、ghci で yesod Web サイトをデバッグすることです。

-- | Running your app inside GHCi.
--
-- To start up GHCi for usage with Yesod, first make sure you are in dev mode:
--
-- > cabal configure -fdev
--
-- Note that @yesod devel@ automatically sets the dev flag.
-- Now launch the repl:
--
-- > cabal repl --ghc-options="-O0 -fobject-code"
--
-- To start your app, run:
--
-- > :l DevelMain
-- > DevelMain.update
--
-- You can also call @DevelMain.shutdown@ to stop the app
--
-- You will need to add the foreign-store package to your .cabal file.
-- It is very light-weight.
--
-- If you don't use cabal repl, you will need
-- to run the following in GHCi or to add it to
-- your .ghci file.
--
-- :set -DDEVELOPMENT
--
-- There is more information about this approach,
-- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci

cabal replstack ghciこれらの 2 つのファイルでエラーが発生しないように、事前にプロジェクトをコンパイルします。

于 2016-03-13T03:14:58.750 に答える