在安装 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 ( /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。在我的 cabal 文件中,我只指定了最新版本的 yesod (1.1.9) 以查看它是否在 Heroku 上可用(它还没有使用 Yesod 或 Shakespeare-js):
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
这个项目在我的虚拟机上本地构建和运行,具有类似的堆栈,包括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(最新版本)在任何地方编译,甚至在本地编译。
我通过强制shakespeare < 1.0.3 解决了错误这并不能解决无法编译最新版本的shakespeare 的问题(是的)。