"无法加载包'正则表达式'...未知符号'regerror'"



对于一个新项目,我一直在尝试构建threepenny-gui包,这是我过去做过很多次的事情,没有任何麻烦。但是,这次我遇到了一条不寻常的错误消息:

> stack build
threepenny-gui     > configure
threepenny-gui     > Configuring threepenny-gui-0.9.0.0...
threepenny-gui     > build
threepenny-gui     > Preprocessing library for threepenny-gui-0.9.0.0..
threepenny-gui     > Building library for threepenny-gui-0.9.0.0..
threepenny-gui     > [ 1 of 29] Compiling Foreign.JavaScript.Include
threepenny-gui     > [ 2 of 29] Compiling Foreign.JavaScript.Resources
threepenny-gui     > ghc.exe: unable to load package `regex-posix-0.96.0.0'
threepenny-gui     > ghc.exe:  | C:srsnapshots14724cfdlibx86_64-windows-ghc-8.8.4regex-posix-0.96.0.0-11M5Q2Uki3ACYikP2WXOuqHSregex-posix-0.96.0.0-11M5Q2Uki3ACYikP2WXOuq.o: unknown symbol `regerror'
--  While building package threepenny-gui-0.9.0.0 using:
C:srsetup-exe-cachex86_64-windowsCabal-simple_Z6RU0evB_3.0.1.0_ghc-8.8.4.exe --builddir=.stack-workdist29cc6475 build --ghc-options " -fdiagnostics-color=always"
Process exited with code: ExitFailure 1
Progress 1/2

现在,一个快速的谷歌显示,这个错误消息以前已经出现过——在 2010 年,之后它通过 GHC 更新得到了修复。我尝试更改 GHC 版本(上面的输出是 GHC 8.8.4),但它也不适用于 8.8.3 或 8.8.2。我还尝试删除regex-posix¹并重新安装它,但这也不起作用。在这一点上,我必须承认这个错误完全难倒了我;还有其他人知道可能导致它的原因吗,如果是这样,我该如何解决它?

¹ 具体来说,我删除了C:srsnapshots14724cfdlibx86_64-windows-ghc-8.8.4regex-posix-0.96.0.0-11M5Q2Uki3ACYikP2WXOuqC:srsnapshots14724cfdpkgdbregex-posix-0.96.0.0-11M5Q2Uki3ACYikP2WXOuq.conf,并做了ghc-pkg unregister regex-posix

事实证明,这是regex-posix而不是threepenny-gui的问题。这个问题可以通过启用阴谋集团旗帜_regex-posix-clib来解决。要设置它,我首先需要注销以前版本的regex-posix

> stack --resolver lts-16.23 exec -- ghc-pkg unregister regex-posix-0.96.0.0 --force

然后我需要用正确的标志重建它:

> stack build regex-posix-0.96.0.0 --flag regex-posix:_regex-posix-clib --resolver lts-16.23

之后stack build threepenny-gui --resolver lts-16.23成功了。(出于某种原因,我需要在这些命令中显式指定解析程序。

最新更新