堆栈找不到它应该能够找到的本地模块
Stack can not find a local module that it should be able to find
我回到了一个几周没做的项目。这次我重新安装了堆栈。当我通过 运行ning ghcid -c 'stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs'
启动 GHCID 时,我收到此错误:
Could not find module ‘Base’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
8 | import qualified Base as B
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
但奇怪的是,我可以使用 stack run
成功编译和 运行 我的程序。我还可以将 Main.hs
加载到 stack ghci
.
Base.hs
与 Main.hs
.
位于 app
目录中
这是我的 .cabal 文件,显示我指定了 Base:
executable fishing-web-app-exe
main-is: Main.hs
other-modules:
Paths_fishing_web_app
, Base
...
起初我以为是 GHCID 问题,但我可以直接从命令行 运行ning stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
重现错误消息。
我也尝试删除 .stack-work
目录并重试,但我遇到了同样的错误。
错误消息说尝试使用 -v
标志来查看搜索的文件。这是我 运行 ghcid -v 'stack exec ...
.
时的输出
%ARCH: x86_64
%VERSION: 0.8.7
%ARGUMENTS: ["-v","stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs"]
Loading ghci -fno-code -fno-break-on-exception -fno-break-on-error -v1 -ferror-spans -j "stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs" ...
%STDOUT: GHCi, version 8.10.2: https://www.haskell.org/ghc/ :? for help
%STDOUT2: GHCi, version 8.10.2: https://www.haskell.org/ghc/ :? for help
%STDIN: import qualified System.IO as INTERNAL_GHCID
%STDIN: :unset +t +s
%STDIN: :set prompt #~GHCID-START~#
%STDIN: :set prompt-cont #~GHCID-START~#
%STDIN: :set -fno-break-on-exception
%STDIN: :set -fno-break-on-error
%STDIN: :set -v1
%STDIN: :set -fno-hide-source-paths
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','1','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','1','~','#']
GHCi, version 8.10.2: https://www.haskell.org/ghc/ :? for help
%STDERR:
%STDOUT2:
%STDERR: <no location info>: error:
%STDOUT2: <no location info>: error:
<no location info>: error:
%STDOUT: Failed, no modules loaded.
%STDERR: can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
%STDOUT2: Failed, no modules loaded.
%STDOUT2: can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
Failed, no modules loaded.
can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
%STDOUT: Prelude> Prelude> Prelude INTERNAL_GHCID> Prelude INTERNAL_GHCID> #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-1~#
%STDERR: #~GHCID-FINISH-1~#
%STDIN: :show modules
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','2','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','2','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-2~#
%STDERR: #~GHCID-FINISH-2~#
%STDIN:
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','3','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','3','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-3~#
%STDERR: #~GHCID-FINISH-3~#
%STDIN: :set -ferror-spans
:set -j
:set -fdiagnostics-color=always
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','4','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','4','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-4~#
%STDERR: #~GHCID-FINISH-4~#
%STDIN: :show paths
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','5','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','5','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~#current working directory:
%STDOUT: /home/nick
%STDOUT: module import search paths:
%STDOUT: .
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-FINISH-5~#
%STDERR: #~GHCID-FINISH-5~#
%MESSAGES: [Message {loadSeverity = Error, loadFile = "/home/nick/<unknown>", loadFilePos = (0,0), loadFilePosEnd = (0,0), loadMessage = ["<no location info>: error:"," can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs"]}]
%LOADED: ["/home/nick/<unknown>"]
]0;1 error - nick%WAITING: /home/nick/.ghcid /home/nick/<unknown>
%WAITING: /home/nick
我的栈版本是2.5.1
问题是我没有从项目目录中 运行 宁 stack exec
命令。如果我 运行 来自 app 目录的命令,那么一切都会按预期工作。
我回到了一个几周没做的项目。这次我重新安装了堆栈。当我通过 运行ning ghcid -c 'stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs'
启动 GHCID 时,我收到此错误:
Could not find module ‘Base’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
8 | import qualified Base as B
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
但奇怪的是,我可以使用 stack run
成功编译和 运行 我的程序。我还可以将 Main.hs
加载到 stack ghci
.
Base.hs
与 Main.hs
.
app
目录中
这是我的 .cabal 文件,显示我指定了 Base:
executable fishing-web-app-exe
main-is: Main.hs
other-modules:
Paths_fishing_web_app
, Base
...
起初我以为是 GHCID 问题,但我可以直接从命令行 运行ning stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
重现错误消息。
我也尝试删除 .stack-work
目录并重试,但我遇到了同样的错误。
错误消息说尝试使用 -v
标志来查看搜索的文件。这是我 运行 ghcid -v 'stack exec ...
.
%ARCH: x86_64
%VERSION: 0.8.7
%ARGUMENTS: ["-v","stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs"]
Loading ghci -fno-code -fno-break-on-exception -fno-break-on-error -v1 -ferror-spans -j "stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs" ...
%STDOUT: GHCi, version 8.10.2: https://www.haskell.org/ghc/ :? for help
%STDOUT2: GHCi, version 8.10.2: https://www.haskell.org/ghc/ :? for help
%STDIN: import qualified System.IO as INTERNAL_GHCID
%STDIN: :unset +t +s
%STDIN: :set prompt #~GHCID-START~#
%STDIN: :set prompt-cont #~GHCID-START~#
%STDIN: :set -fno-break-on-exception
%STDIN: :set -fno-break-on-error
%STDIN: :set -v1
%STDIN: :set -fno-hide-source-paths
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','1','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','1','~','#']
GHCi, version 8.10.2: https://www.haskell.org/ghc/ :? for help
%STDERR:
%STDOUT2:
%STDERR: <no location info>: error:
%STDOUT2: <no location info>: error:
<no location info>: error:
%STDOUT: Failed, no modules loaded.
%STDERR: can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
%STDOUT2: Failed, no modules loaded.
%STDOUT2: can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
Failed, no modules loaded.
can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs
%STDOUT: Prelude> Prelude> Prelude INTERNAL_GHCID> Prelude INTERNAL_GHCID> #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-1~#
%STDERR: #~GHCID-FINISH-1~#
%STDIN: :show modules
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','2','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','2','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-2~#
%STDERR: #~GHCID-FINISH-2~#
%STDIN:
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','3','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','3','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-3~#
%STDERR: #~GHCID-FINISH-3~#
%STDIN: :set -ferror-spans
:set -j
:set -fdiagnostics-color=always
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','4','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','4','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-START~##~GHCID-FINISH-4~#
%STDERR: #~GHCID-FINISH-4~#
%STDIN: :show paths
%STDIN:
INTERNAL_GHCID.putStrLn ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','5','~','#']
INTERNAL_GHCID.hPutStrLn INTERNAL_GHCID.stderr ['#','~','G','H','C','I','D','-','F','I','N','I','S','H','-','5','~','#']
%STDOUT: #~GHCID-START~##~GHCID-START~#current working directory:
%STDOUT: /home/nick
%STDOUT: module import search paths:
%STDOUT: .
%STDOUT: #~GHCID-START~##~GHCID-START~##~GHCID-FINISH-5~#
%STDERR: #~GHCID-FINISH-5~#
%MESSAGES: [Message {loadSeverity = Error, loadFile = "/home/nick/<unknown>", loadFilePos = (0,0), loadFilePosEnd = (0,0), loadMessage = ["<no location info>: error:"," can't find file: stack exec -- ghci -isrc -iapp ~/haskell/fishing-web-app/app/Main.hs"]}]
%LOADED: ["/home/nick/<unknown>"]
]0;1 error - nick%WAITING: /home/nick/.ghcid /home/nick/<unknown>
%WAITING: /home/nick
我的栈版本是2.5.1
问题是我没有从项目目录中 运行 宁 stack exec
命令。如果我 运行 来自 app 目录的命令,那么一切都会按预期工作。