Haskell 莎士比亚js未能在Heroku上编译
在安装shakespeare-js-1.0.2时,将我的简单Yesod应用程序部署到Heroku cabal时失败Haskell 莎士比亚js未能在Heroku上编译,haskell,deployment,heroku,web-deployment,yesod,Haskell,Deployment,Heroku,Web Deployment,Yesod,在安装shakespeare-js-1.0.2时,将我的简单Yesod应用程序部署到Heroku cabal时失败 Building shakespeare-js-1.0.2... Building persistent-1.0.2.2... Building yaml-0.8.2.1... Building tls-extra-0.6.1... Failed to install shakespeare-js-1.0.2 Last 10 lines of the build log ( /ap
Building shakespeare-js-1.0.2...
Building persistent-1.0.2.2...
Building yaml-0.8.2.1...
Building tls-extra-0.6.1...
Failed to install shakespeare-js-1.0.2
Last 10 lines of the build log ( /app//.cabal/logs/shakespeare-js-1.0.2.log ):
Building shakespeare-js-1.0.2...
Preprocessing library shakespeare-js-1.0.2...
[1 of 3] Compiling Text.Julius ( Text/Julius.hs, dist/build/Text/Julius.o )
[2 of 3] Compiling Text.Coffee ( Text/Coffee.hs, dist/build/Text/Coffee.o )
Text/Coffee.hs:56:7:
`preEscapeBegin' is not a (visible) field of constructor `PreConvert'
Text/Coffee.hs:57:7:
`preEscapeEnd' is not a (visible) field of constructor `PreConvert'
该项目是一个简单的网站,使用WAI和Warp打印hello world。
在我的阴谋集团文件中,我只指定YesSOD(1.1.9)的最新版本,以查看它是否在Heroku上可用(它还没有使用YesSOD或shakespeare js):
这个项目使用类似的堆栈在我的虚拟机上本地构建和运行,包括shakespeare-js-1.0.2
我尝试了以下方法:
- 在.cabal文件中强制使用除1.0.2以外的更新或旧版本的shakespeare js。同样的编译错误也会出现
- 在黑暗中,我尝试从.cabal文件中删除一些可能影响编译的扩展名,如TemplateHaskell
- 当我使用shakespeare js<1.0.2时,在heroku选择1.0.1后,我得到一个编译错误,该错误也无法编译
- 我无法让shakespeare-js-1.1.2(最新版本)在任何地方编译,即使是在本地
这并不能解决无法编译莎士比亚(yesod)最新版本的问题。问题在于类型
预转换
在和之间更改
在旧版本中,preEscapeBegin
和preEscapeEnd
是构造函数PreConvert
的字段,但在版本1.0.3中已将其删除
因此,解决办法是
- 使用较旧版本的
,指定莎士比亚
或莎士比亚<1.0.3
- 使用足够新版本的
,指定莎士比亚js
莎士比亚js>=1.1.2
(如果您使用较新的
莎士比亚
版本,可能需要进一步调整,我没有尝试过。)正如他所说,较旧版本和较新版本也不起作用-我已经有几天遇到了相同的问题。我没有尝试过,但我希望莎士比亚js
能够使用较旧版本的莎士比亚
,我或多或少希望shakespeare-js-1.1.2
与shakespeare-1.0.3
一起工作。后者可能还需要其他软件包的更新版本,而前者可能需要使用某些其他软件包的旧版本,而不是默认情况下的cabal picks。但是shakespeare-1.0.3
显然不能与shakespeare-js<1.1.2
一起使用。你试过什么组合?哦,我没有仔细阅读你的评论。我误解了你第一个建议中的莎士比亚;在我最后的尝试中,我尝试了不同版本的《莎士比亚js》,旧版本不起作用,新版本带来了我无法解决的新问题。但是,上述错误在限制shakespeare<1.0.3
的情况下不再发生。所以谢谢你的提示!尝试使用shakespeare<1.0.3
,而不是shakespeare js
。快速问题:在Daniel建议的修复之后,您不会遇到以下错误:拒绝:ghc-path-0.1.0.9(未知包:ghc)
?
executable Website
extensions:NoImplicitPrelude
TemplateHaskell
QuasiQuotes
OverloadedStrings
CPP
MultiParamTypeClasses
TypeFamilies
GADTs
GeneralizedNewtypeDeriving
FlexibleContexts
EmptyDataDecls
NoMonomorphismRestriction
main-is: source/Main.hs
-- other-modules:
build-depends: base == 4.5.*
, http-types
, template-haskell
, wai
, wai-extra
, warp
, yesod == 1.1.9